zoukankan      html  css  js  c++  java
  • 遍历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();

       }

  • 相关阅读:
    leetcode 77 组合
    leetcode 40组合总和 II
    leetcode 216 组合总和III
    弹性伸缩 AS(Auto Scaling)
    弹性计算服务(Elastic Compute Service) / 云服务器 ECS
    云计算概述
    Zabbix Proxy 分布式监控
    Zabbix 自动发现 & 自动注册
    LVS-DR 模式
    GoAccess 监控工具
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10189937.html
Copyright © 2011-2022 走看看