迭代Collection时删除元素

时间:2014-06-18 18:21:48

标签: java collections iterator

我读到在迭代Collection时删除元素的正确方法是这样的(使用迭代器):

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

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

while(itr.hasNext()) {
    itr.remove();
}

但是,我收到Exception in thread "main" java.lang.IllegalStateException,我不知道为什么。 有人能帮助我吗?

1 个答案:

答案 0 :(得分:6)

通过在迭代器上调用the next() method,您永远不会前进到下一个元素。尝试:

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