List循环删除的问题

今天做项目时遇到一个奇葩的问题,在for循环中删除满足条件的那条记录

代码如下:

for(int i=0;i<list.size();i++) {
   Map map = (Map) list.get(i);
   if (!"1".equals(map.get("ywlx"))) {
      if (!"00".equals(map.get("ywhj")) && !"98".equals(map.get("ywhj")) && !"99".equals(map.get("ywhj"))) {
         map.put("ywzt", "正在扣款中");
      }
     if("3".equals(map.get("ywlx"))){//满足条件则删除
   iterator.remove();
     }
   }

咋一看,可能觉得没问题,但你会发现会有一条数据删不掉的情况,哈哈

那是什么原因呢?首先,list.remove()方法执行后数组会重新计算下标,当你删除掉index为0的记录之后,i之后已经为1了,然后list中index=0的那条记录将不再参与遍历。

解决方法:

1,使用list.itrerotor方法遍历删除

2.将for(int i=0;i<list.size();i++)改为for(int i=list.size()-1;i>=0;--i),让数组的遍历从右向左遍历。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值