java中List遍历删除元素

版权声明:本文为博主原创文章,转载请说明出处 https://blog.csdn.net/u010002184/article/details/88891471
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        list.add("d");
        list.add("d");

方法1:错误

        //移除一个元素成功,移除2个元素报错:java.util.ConcurrentModificationException
        for (String str : list) {
            if ("d".equals(str)) {
                list.remove(str);
            }
        }

方法2:正确

        //正确 可删除多个
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if ("d".equals(s)) {
                iterator.remove();//使用迭代器的删除方法删除
            }
        }

方法3:

        //移除不干净
        for (int i = 0; i < list.size(); i++) {
            System.out.println("list当前长度:" + list.size());
            if ("d".equals(list.get(i))) {
                list.remove(i);
            }
        }
        System.out.println("--------------");
        System.out.println(list);
        System.out.println("--------------");

list当前长度:7
list当前长度:7
list当前长度:7
list当前长度:7
list当前长度:6
--------------
[a, b, c, e, d]
--------------

list remove(对象)  remove(下标) ;iterator remove() 无参数

以上基于java1.8

end

猜你喜欢

转载自blog.csdn.net/u010002184/article/details/88891471