我正在阅读有关并发修改异常的文章,并注意到在使用增强的 for 循环删除元素的情况下会抛出并发修改异常,而普通的 for 循环则不会。 有人可以帮我理解为什么会这样吗,在代码下面
import java.util.ArrayList;
import java.util.List;
public class ConcurrentModificationExceptionExample {
public static void main(String args[]) {
List<String> myList = new ArrayList<String>();
myList.add("1");
myList.add("2");
myList.add("3");
myList.add("4");
myList.add("5");
// enhanced for loop
/* for(String s:myList){
if(s.equals("1")){
myList.remove("1");
}
}*/
// normal for loop
for(int i = 0; i<myList.size(); i++){
if(myList.get(i).equals("1")){
myList.remove("1");
}
}
System.out.println(myList);
}
}
用于测试//增强的for循环可以取消注释
最佳答案
这是因为在您的“普通 for 循环”代码中没有涉及 Iterator
。相反,您可以使用 get
单独访问元素。
关于java - for循环与并发修改异常中增强for循环的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54122420/