概述
并发修改异常
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextNode(HashMap.java:1437)
at java.util.HashMap$KeyIterator.next(HashMap.java:1461)
at org.hibernate.collection.internal.AbstractPersistentCollection$IteratorProxy.next(AbstractPersistentCollection.java:835)
at com.aui.stock.service.impl.CartServiceImpl.deleteCartItem(CartServiceImpl.java:147)
at com.aui.stock.service.impl.CartServiceImpl$$FastClassBySpringCGLIB$$323fef9e.invoke(<generated>)
当时用迭代器删除集合中的元素值需要注意并发修改异常
使用迭代器去删除 不要使用list集合去删除
错误的做法
Set<GoodsEntity> items = cart.getItems();
if(items!=null&&items.size()>0){
for(GoodsEntity goodsEntity : items){
if(snSet.size()>0){
if(snSet.contains(goodsEntity.getProduct().getSn())){
items.remove(goodsEntity);
}
}
}
}
正确的做法
Set<GoodsEntity> items = cart.getItems();
if(items!=null&&items.size()>0){
Iterator<GoodsEntity> iterator = items.iterator();
while(iterator.hasNext()){
GoodsEntity goodsEntity = iterator.next();
if(snSet.size()>0){
if(snSet.contains(goodsEntity.getProduct().getSn())){
iterator.remove();
}
}
}
}
最后
以上就是花痴小霸王为你收集整理的java.util.ConcurrentModificationException的全部内容,希望文章能够帮你解决java.util.ConcurrentModificationException所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复