美文网首页
List使用迭代器循环遍历及删除元素

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

作者: AC编程 | 来源:发表于2022-08-30 11:25 被阅读0次

一、结论

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);
    }
}

相关文章

网友评论

      本文标题:List使用迭代器循环遍历及删除元素

      本文链接:https://www.haomeiwen.com/subject/rzmhnrtx.html