遍历List集合删除元素的出现报错

遍历List集合删除元素的出现报错

 

遍历List集合删除元素的时候会发生索引越界异常或内容遍历不全等问题。

例子:

List<String> al = new ArrayList<String>();

   al.add("12");

   al.add("1");

   al.add("13");  

   int size = al.size();

 

 

 

问题1:索引越界异常Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2

  for(int i=0;i<size;i++){

    if("1".equals(al.get(i)))

     al.remove(i);

   }

问题分析:满足条件后删除一个元素,集合只有两个元素,只能al.get(0),al.get(1),而al.get(2)获取元素时索引越界了。有同学可能想把上面的size个数改成al.size()就行了,虽然解决了索引越界问题,但出现了遍历不全问题。

 

 

问题2:内容遍历不完全

for(int i=0;i<al.size();i++){

    if("1".equals(al.get(i)))

     al.remove(i);

   }

问题分析:满足条件后删除一个元素,不再循环第三个元素

 

 

正确的代码:

Iterator<String> it = al.iterator();

   while(it.hasNext()){

    if("1".equals(it.next()))

     it.remove();

   }

转载于:https://www.cnblogs.com/chinaifae/p/10189937.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值