码上敲享录 > java常见报错解答 > 遍历List集合删除元素的出现报错

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

上一章章节目录下一章 2018-02-07已有1918人阅读 评论(0)

遍历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();

   }


本文地址:http://www.yayihouse.com/yayishuwu/chapter/1095


0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交