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方法。