LinkedHashMapからキー/値のペア全体を置換しようとしていますが、機能していないようです。私は同時修正例外を取得しています。 大きな変更なしに同じ位置にあるキーのキー/値ペア全体を置き換える方法はありますか?同じ置き換え位置のLinkedHashmapからキー/値のペア全体を置換する方法
私は、次の操作を実行しようとした:
Map<String, String> testMap = new LinkedHashMap<String, String>();
testMap.put("1", "One");
testMap.put("2", "Two");
testMap.put("3", "Three");
testMap.put("4", "Four");
testMap.put("5", "Five");
testMap.put("6", "Six");
/*
* Removing an element from the Map.
*/
Iterator<Entry<String, String>> iter = testMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String, String> entry = (Map.Entry<String, String>) iter.next();
System.out.print(entry.getKey() + "->" + entry.getValue() + "; ");
if (entry.getKey().equals("1"))
iter.remove(); // remove one entry (key/value) with key "1". Ok
if (entry.getValue().equalsIgnoreCase("Two"))
iter.remove(); // removing all entries (key/value) for value "Two". Ok
if (entry.getKey().equals("3"))
entry.setValue("Updated_Three"); // Updating value for key 3. Ok
// Below how to now add a new key/value pair in my testMap at this position
// without affecting any other order?
if (entry.getKey().equals("4")) {
iter.remove();
// How to now add a new key/value pair at this position without affecting any
// other order.
// testMap.put("44", "FourFour"); // Removing entry with key 4 and adding a new
// key/valuepair to hashmap. It throws ConcurrentModificationException. Any
// other way to perform this?
}
}
なぜですか? 'LinkedHashMap'の反復順序は挿入順序として定義されています*。なぜそれを壊したいのですか? – EJP
@EJP私の用途は、古いキーと値のペアのエントリが削除されたのと同じ位置にエントリ(キー/値)を追加することです。あなたが何か考えている場合は、共有してください... – vinsinraw
@vinSあなたは、testMap.put( "44"、 "FourFour");実際には、同じ位置のキー/値を置き換えるためのこのステートメントへの代替方法があるかどうかを知りたかったのです。 – vinsinraw