2014-05-14 71 views
0

我有一個HashMap有幾個條目。我想遍歷HashMap的所有值。我想在迭代時修改HashMap(添加和刪除條目)。這可以通過使用ListIterator完成。對? 但新的參賽作品會發生什麼?他們也會迭代嗎?或者他們會被忽略?迭代HashMap的值只有一次

謝謝大家。

永旺

+2

迭代器只能刪除不加。 http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html。請解釋你的理由:) – pL4Gu33

+0

當'Iterator'迭代它時,你將映射添加到'HashMap'時發生了什麼? – rgettman

+0

你試過了什麼? – SagarPPanchal

回答

0

同時使用迭代器不能添加,它會拋出一個ConcurrentModificationException

你可以做什麼:

Map<String, String> thingsToAdd = new HashMap<>(); 

for (Iterator<Map.Entry<String, String>> i = yourMap.entrySet().iterator(); i.hasNext();) { 
      Map.Entry<String, String> entry = i.next(); 

    if (...) { // Add things 
     thingsToAdd.put(..); 
    } 

    if (...) { // Remove things 
     i.remove(); 
    } 
} 

yourMap.addAll(thingsToAdd); 
+0

您可以使用itaretor.remove()方法刪除元素 – Kicsi

+0

修復,謝謝:) –