【发布时间】:2015-12-28 21:56:20
【问题描述】:
我有这个哈希图
HashMap <Integer,Integer> H = new HashMap <Integer,Integer>();
当我尝试从 HashMap 中删除密钥时,我收到此错误
**Exception in thread "main" java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:922)
at java.util.HashMap$KeyIterator.next(HashMap.java:956)
at Livre.montantTotal(Livre.java:42)**
这是我的代码
for (int e : H.keySet()){
H.put(e, H.get(e)-1);
if (H.get(e) == 0){
H.remove(e);
}
}
【问题讨论】:
-
您不能在迭代时修改集合。
-
好吧,您可以在迭代器上使用 remove() 方法(因此将 for 循环扩展为适当的迭代器),但在迭代时您将无法添加到集合中。也许收集列表中的添加并添加到最后。
-
@FernandoMatsumoto 嗯,它是相关的,但不是真正重复的,因为这是一张地图
-
为什么每个人都投票反对?它可能是重复的,但它是一个常见问题