List使用迭代器循环遍历及删除元素

2022-08-30  本文已影响0人  AC编程

一、结论

for循环、foreach都不能用来删除指定元素,可以通过迭代器来删除指定的元素

二、代码

public class Client {
    public static void main(String[] args) {
        test3();
    }


    /**
     * 正常
     */
    public static void test() {
        List<String> list = new ArrayList<>();

        list.add("A");
        list.add("B");
        list.add("C");

        for (String item : list) {
            if (item.equals("B")) {
                list.remove(item);
            }
        }

        System.out.println(list);
    }

    /**
     * 报错:Exception in thread "main" java.util.ConcurrentModificationException
     */
    public static void test2() {
        List<String> list = new ArrayList<>();

        list.add("A");
        list.add("B");
        list.add("B");
        list.add("C");

        for (String item : list) {
            if (item.equals("B")) {
                list.remove(item);
            }
        }

        System.out.println(list);
    }

    /**
     * 迭代器删除指定元素:正常
     */
    public static void test3() {
        List<String> list = new ArrayList<>();

        list.add("A");
        list.add("B");
        list.add("B");
        list.add("C");

        //目标删除指定元素
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            String item = it.next();
            if (item.equals("B")) {
                it.remove();
            }
        }
        System.out.println(list);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读