List循环中如何删除一个元素

匆匆过客 提交于 2019-12-11 19:24:32
    //List循环中删除制定元素
    @Test
    public void test17(){
        ArrayList<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        list.add("eee");
        //方式1:直接抛出异常
//        list.forEach(str->{
//            if (str.equals("ccc"))
//                list.remove("ccc");
//        });
        //方式二:删除错误值
//        for (int i = 0; i < list.size(); i++) {
//            String temp = list.get(i);
//            if (temp.equals("ccc"))
//                list.remove("ccc");
//        }
        //方式三:正解
        Iterator<String> it = list.iterator();
        while (it.hasNext()){
            String x = it.next();
            if (x.equals("ccc"))
                it.remove();
        }
        //方式四:正解简化版 JDK1.8支持
        list.removeIf(s -> s.equals("ccc"));

        list.forEach(System.out::println);
        //原因说明。不用迭代器删除元素时,list.size会相应缩短且下标前移,导致相邻满足条件的元素未删除
    }
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!