除非使用,否则不能在迭代时从集合中删除元素
Iterator。
这就是导致异常的原因。
buyingItemEnumerationMap.remove(item.getKey());
使用Iterator#remove()在遍历集合时删除元素,例如
Iterator<Map.Entry<String, Integer>> iterator = buyingItemEnumerationMap.entrySet().iterator();while (iterator.hasNext()) { Map.Entry<String, Integer> item = iterator.next(); if(RandomEngine.boolChance(50)){ //will delete? iterator.remove(); } //..}编辑 :(响应OP的评论)
是的,删除完成通过
Iterator#remove()在
Set由归国
HashMap.entrySet()将在基本反映了
Map作为
Set被它的支持。在此处引用JavaDoc:
返回此映射中包含的映射的Set视图。集合由地图支持,因此对地图的 更改会反映在集合中,反之亦然 。



