java中List遍历删除元素

        List 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 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() 无参数

java中List遍历删除元素_第1张图片

java中List遍历删除元素_第2张图片

java中List遍历删除元素_第3张图片

以上基于java1.8

end

你可能感兴趣的:(Java,java,list,遍历,删除元素)