java中遇到的恶心异常java.util.ConcurrentModificationException

1,单线程下遇到的场景:在foreach遍历中,使用list.remove(对象)抛异常

 

list.forEach(orderItemEntity -> {

    if (orderItemEntity.getProductId().equals(productId)){

        list.remove(orderItemEntity);

    }

})

产生的原因:

   看一下在jdk中的说法:

java中遇到的恶心异常java.util.ConcurrentModificationException

   而这里, list调用其remove方法,就会造成这个异常,

  解决方法:

   Iterator<OrderItemEntity> iterator = list.iterator();
        while (iterator.hasNext()){
            OrderItemEntity orderItemEntity = iterator.next();
            if (orderItemEntity.getProductId().equals(productId)){
                iterator.remove();
            }
        }

使用迭代的remove方法。