我有以下代码:
// Creates ArrayList with integers 0-9
ArrayList<Integer> intKeys = new ArrayList<Integer>();
for (int x = 0; x < 10; x++) {
intKeys.add(x);
}
// Creates iterator with integers 0-9
Iterator<Integer> allKeys = intKeys.iterator();
// Loops 10 times, each time obtaining a key to remove from the ArrayList
for (int x = 0; x < 10; x++) {
Integer key = allKeys.next();
intKeys.remove(key);
}
我理解,如果在循环集合时删除集合的元素,则抛出ConcurrentModificationException,例如:
for (String key : someCollection) {
someCollection.remove(key);
}
但是现在我没有循环 - 只是任意次数。此外,错误行很有意思Integer key = allKeys.next();
这可能是导致此异常的原因吗?
答案 0 :(得分:0)
在循环播放时删除项目时,根本无法使用列表的Iterator
对象。
如果要删除列表中的所有项目:
while (!list.isEmpty()) {
Integer i = list.remove(0);
//Do something with the item
}
否则,您可以在没有迭代器的情况下迭代:
for (int i = 0; i < list.length(); i++) {
//Do something with the list
}