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

List循环中删除制定元素

准备集合

    ArrayList<String> list = new ArrayList<>();
    {
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        list.add("eee");
    }

姿势一(forEach)直接抛出异常

    @Test
    public void test1(){
        //方式1:直接抛出异常java.util.ConcurrentModificationException
        list.forEach(str->{
            if (str.equals("ccc"))
                list.remove("ccc");
        });
        list.forEach(System.out::println);//JDK1.8遍历集合
    }

姿势二(普通for循环)可能会删除错误的值

    @Test
    public void test2(){
        //方式二:能删除但要注意角标,可能会删除错误的值
        for (int i = 0; i < list.size(); i++) {
            String temp = list.get(i);
            if (temp.equals("ccc"))
                list.remove("ccc");
        }
        list.forEach(System.out::println);//JDK1.8遍历集合
    }

姿势三(迭代器)能正常删除

    @Test
    public void test3(){
        //方式三:迭代器删除,能正常删除
        for (int i = 0; i < list.size(); i++) {
            String temp = list.get(i);
            if (temp.equals("ccc"))
                list.remove("ccc");
        }
        list.forEach(System.out::println);//JDK1.8遍历集合
    }

姿势四(JDK1.8方法)最帅最有效的删除姿势

    @Test
    public void test4(){
        //方式四:JDK1.8方法 最帅最有效的删除姿势
        list.removeIf(s -> s.equals("ccc"));//没错就一行
        list.forEach(System.out::println);//JDK1.8遍历集合
    }
原创文章 19 获赞 2 访问量 4896

猜你喜欢

转载自blog.csdn.net/qq_34173920/article/details/103496882