Zar*_*Zar 4 java oop iterator loops
我正在尝试通过循环遍历列表(嵌套循环)进行迭代.请考虑以下代码:
ArrayList<Integer> list = new ArrayList<Integer>(); // add some values to it
for(int i : list) { // ConcurrentModificationException
Iterator iterator = list.iterator();
while(iterator.hasNext()) {
int n = iterator.next();
if(n % i == 0) {
iterator.remove();
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面的示例导致ConcurrentModificationException.当然,移除元素的条件只是一个例子.
我确定我只是遗漏了一些东西; 但是我应该如何构建一个在Java 中实现相同功能而不会抛出异常的循环?
显然修改list当你迭代它导致execption.您可以使用另一个列表来维护要删除的元素列表,并在最后删除它们.
ArrayList<Integer> list = new ArrayList<Integer>(); // add some values to it
ArrayList<Integer> del = new ArrayList<Integer>(); // Elements to be deleted
for(int i : list) { // ConcurrentModificationException
Iterator iterator = list.iterator();
while(iterator.hasNext()) {
int n = iterator.next();
if(n % i == 0) {
del.add(n);
}
}
}
list.removeALL(del);
Run Code Online (Sandbox Code Playgroud)