1,单线程下遇到的场景:在foreach遍历中,使用list.remove(对象)抛异常
list.forEach(orderItemEntity -> {
if (orderItemEntity.getProductId().equals(productId)){
list.remove(orderItemEntity);
}
})
产生的原因:
看一下在jdk中的说法:

而这里, list调用其remove方法,就会造成这个异常,
解决方法:
Iterator<OrderItemEntity> iterator = list.iterator();
while (iterator.hasNext()){
OrderItemEntity orderItemEntity = iterator.next();
if (orderItemEntity.getProductId().equals(productId)){
iterator.remove();
}
}
使用迭代的remove方法。
本文介绍在Java中使用foreach遍历并删除元素时遇到的问题及解决方案。通过对比异常产生原因,推荐使用Iterator方式来避免并发修改异常。
478

被折叠的 条评论
为什么被折叠?



