#Android##bug#ConcurrentModificationException

今天出现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 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值