我在这里读过这个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
?如果它是错的,有人可以给我一个答案或更有效/更优雅的方式来编写它。
感谢。