2016-07-01 58 views
-3

我想替換我的地圖中的鍵。如何替換java映射中的所有鍵?

我有以下代碼:

Map<String, Object> map = new HashMap<String, Object>(); 
map.put("a", "1"); 
map.put("b", "2"); 
map.put("c", "3"); 
map.put("d", "4"); 
map.put("e", "5"); 
Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator(); 
while (iterator.hasNext()) { 
    Map.Entry<String, Object> next = iterator.next(); 
    Object o = next.getValue(); 
    //how to add new element ? 
    //... 
    iterator.remove(); 
} 

我要實現地圖鍵

a1->1 
b2->2 
c3->3 
d4->4 
e5->5 

如果我在循環使用map.put(next.getKey() + next.getValue(), next.getValue());就會導致ConcurrentModificationException

+0

我們是否有保證新密鑰不在地圖中?您在編寫代碼時是否還面臨任何特定問題? – Pshemo

+1

這是一些跟蹤論壇審覈的測試賬戶嗎? – Kayaman

+0

@Pshemo是保證 – gstackoverflow

回答

2

要避免ConcurrentModificationException,您需要將新的鍵/值對添加到單獨的地圖,然後使用putAll將該地圖添加到原始地圖中。

Map<String, Object> newMap = new HashMap<>(); 
    while (iterator.hasNext()) { 
     Map.Entry<String, Object> entry = iterator.next(); 
     iterator.remove(); 
     newMap.put(...); // Whatever logic to compose new key/value pair. 
    } 
    map.putAll(newMap); 
相關問題