1. 程式人生 > >java中遇到的噁心異常java.util.ConcurrentModificationException

java中遇到的噁心異常java.util.ConcurrentModificationException

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