List过滤数据ConcurrentModificationException的坑

今天项目需要将采集到List数据过滤,SoEasy!刷刷的写下了以下代码:

 public static void main(String[] args) {
        Filter filter = new Filter();
        List<String> sss = new ArrayList<>();
        sss.add("1");
        sss.add("22");
        sss.add("333");
        sss.add("4444");
        filter.filter(sss);
        for (String ss : sss) {
            System.out.println(ss);
        }
    }

    public static class Filter {
        /**
         * @param source 传入的要过滤的源数据
         * @return 将过滤后的数据返回
         */
        public List<String> filter(List<String> source) {
            for (String ss : source) {
                if (ss.length() < 3) {
                    source.remove(ss);
                }

            }
            return source;
        }
    }

一运行,结果

Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
    at java.util.ArrayList$Itr.next(ArrayList.java:851)
    at Main$Filter.filter(Main.java:37)
    at Main.main(Main.java:25)

先说怎么解决,就是Itorator去处理,只贴fiter方法:

 public List<String> filter(List<String> source) {
            Iterator<String> iterator = source.iterator();
            while (iterator.hasNext()) {
                if (iterator.next().length() < 3) {
                    iterator.remove();
                }
            }
            return source;
        }

运行结果正确:

333
4444
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,276评论 25 708
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,809评论 18 399
  • 我是很少让父母操心的孩子; 在自己的亲朋那里也一直是弟弟妹妹们心中的榜样; 昨天母亲打电话好一顿数落;整天瞎忙,没...
    青柠檬静语阅读 670评论 0 0
  • 今天学习了韩语发音这个app的内容,把之前学习过的辅音和元音复习了一下,然后把元音ㅏ相关的单词和句子学习了几遍,听...
    Fairy0925阅读 309评论 0 1
  • 填坑支付宝填坑是每个接入支付宝必经之路,下面是我接入支付宝遇到的问题汇总,希望大家在接入的路上少一点弯路 问题1....
    lumic000阅读 26,472评论 44 486

友情链接更多精彩内容