今天出现ConcurrentModificationException
原因如下
App有个功能是添加项目到list里 如果已存在就数量加1 不存在就新建一个对象 类似购物车
if(laundryItemList.size()==0){
Log.v("lisa", "空篮没加过");
LaundryItem packageWashItem=new LaundryItem();
packageWashItem.setName(pieceType);
packageWashItem.setNumber(quantity);
packageWashItem.setPicture(piecePic);
packageWashItem.setPrice(piecePrice);
laundryItemList.add(packageWashItem);
Log.v("lisa", "添加后的size" + laundryItemList.size());
}else{
//如果洗衣篮已经有衣服 就遍历
for(LaundryItem item:laundryItemList){
Log.v("lisa", "111");
//如果曾经添加过这类的就更改数量
if(item.getName()==pieceType){
int oldnumber=item.getNumber();
item.setNumber(oldnumber+quantity);
Log.v("lisa", "满篮已加过");
}
//古国没添加过这类就新建添加进去
else{
Log.v("lisa", "满篮未加过");
LaundryItem packageWashItem=new LaundryItem();
packageWashItem.setName(pieceType);
packageWashItem.setNumber(quantity);
packageWashItem.setPicture(piecePic);
packageWashItem.setPrice(piecePrice);
laundryItemList.add(packageWashItem);
Log.v("lisa","添加后的size"+laundryItemList.size());
}
}
Log.v("lisa","end For");
}
代码逻辑问题 假设添加了A类进购物车 又加了B类
那么再添加B类时我的遍历方法会按照list的顺序 先匹配A 就会进入满篮未加过 添加一次
然后继续遍历list的第二次 匹配B 进入满篮已加过 再更改一次数量
那么在一次遍历中就需要修改两次list 造成ConcurrentModificationException