Java 在迭代集合时删除元素

Java 在迭代集合时删除元素,java,collections,iterator,Java,Collections,Iterator,我了解到,迭代集合时删除元素的正确方法是使用迭代器: List<Integer> list = new ArrayList<Integer>(); list.add(12); list.add(18); Iterator<Integer> itr = list.iterator(); while(itr.hasNext()) { itr.remove(); } 但是,我在主线程java.lang.IllegalStateException中收到异

我了解到,迭代集合时删除元素的正确方法是使用迭代器:

List<Integer> list = new ArrayList<Integer>();
list.add(12);
list.add(18);

Iterator<Integer> itr = list.iterator();

while(itr.hasNext()) {
    itr.remove();
}
但是,我在主线程java.lang.IllegalStateException中收到异常,我不知道为什么。
有人能帮我吗?

您从未通过调用迭代器前进到下一个元素。尝试:

while(itr.hasNext()) {
    System.out.println("Removing " + itr.next());  // Call next to advance
    itr.remove();
}

阅读文档,它清楚地指出:IllegalStateException-如果下一个方法尚未调用,或者在上一次调用下一个方法之后已经调用了remove方法