Java中关于ArrayList中删除元素陷阱

本文介绍了一个在Java开发中遇到的问题,即在遍历集合元素并尝试删除其中一个元素时,如果继续遍历可能导致的异常。通过将要删除的元素放入另一个集合并在遍历结束后使用removeAll方法来解决此问题。

       在Java的开发中我们会遇到这样的问题

           遍历集合中的元素并且remove其中一个元素,若还在继续遍历那么就会出错了。例如:

        ArrayList<String> a = new ArrayList<String>();

        a.add("1");

        a.add("2");

        a.add("3");

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

           if(a.get(i).equals("2")){

            a.remove(a.get(i));

           }

         }

      如果我们进行了上面的操作,就会抛出异常了。因为在我们将2删除后,集合下标会自动缩进,也就是说3在集合中的下标会变成1而不是原来的2了。但是循环在遍历时还是按照2来获取的值,而此时下标为2的地方已经是空值了,所以会抛出异常。


这里的简单解决方法是:将我们要删除的值放入到另外一个集合b中,当我们遍历完后,在前一个集合中直接通过a.removeAll(b)的方式来删除值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值