我有一個HashMap有幾個條目。我想遍歷HashMap的所有值。我想在迭代時修改HashMap(添加和刪除條目)。這可以通過使用ListIterator完成。對? 但新的參賽作品會發生什麼?他們也會迭代嗎?或者他們會被忽略?迭代HashMap的值只有一次
謝謝大家。
永旺
我有一個HashMap有幾個條目。我想遍歷HashMap的所有值。我想在迭代時修改HashMap(添加和刪除條目)。這可以通過使用ListIterator完成。對? 但新的參賽作品會發生什麼?他們也會迭代嗎?或者他們會被忽略?迭代HashMap的值只有一次
謝謝大家。
永旺
同時使用迭代器不能添加,它會拋出一個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);
您可以使用itaretor.remove()方法刪除元素 – Kicsi
修復,謝謝:) –
迭代器只能刪除不加。 http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html。請解釋你的理由:) – pL4Gu33
當'Iterator'迭代它時,你將映射添加到'HashMap'時發生了什麼? – rgettman
你試過了什麼? – SagarPPanchal