ArrayList用迭代器遍历的过程中是否可以删除数据?

使用迭代器遍历ArrayList并尝试删除数据:

public class CollectionApp {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(0);
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        Iterator<Integer> iterator = list.iterator();
        while (iterator.hasNext()){
            Integer obj = iterator.next();
            if(obj==2){
                list.remove(obj);
            }
        }
        System.out.println(list.toString());
    }
}

删除失败,并抛出如下的异常:

用循环替代迭代器遍历:

public class CollectionApp {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(0);
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
       //迭代器用循环替换
        for(int i=0;i<list.size();i++){
            if(list.get(i)==2){
                list.remove(list.get(i));
            }
        }
        System.out.println(list.toString());
    }
}

成功的删除数据

原文地址:https://www.cnblogs.com/junlu/p/14227337.html