Java:迭代hashmap时出现ConcurrentModificationException?

时间:2018-04-21 19:53:31

标签: java

我在这里读过这个post。但是,我不明白如何从迭代器中提取值对,这样我就可以将它放入条件表达式中来决定是否应该删除键值对。

我的原始代码如下,它在运行时抛出此ConcurrentModificationException

for(Map.Entry<String, Order> o: orderIDHashMap.entrySet()) {

    if(o.getValue().getOrderQuantity() == 0) {
        orderIDHashMap.remove(o.getKey());
    }
}

我试图将其切换为:

    Iterator orderIDHashMap_iterator = orderIDHashMap.entrySet().iterator();

    while(orderIDHashMap_iterator.hasNext()) {
        Map.Entry<String, Order> pair = (Entry<String, Order>) orderIDHashMap_iterator.next();
        if(pair.getValue().getOrderQuantity() ==0 ) {
            orderIDHashMap_iterator.remove();
        }
    }   
}

问题:在满足Order条件时,我的代码是否正确实现迭代器以删除对象Order quantity == 0?如果它是错的,有人可以给我一个答案或更有效/更优雅的方式来编写它。

感谢。

0 个答案:

没有答案