ArrayList<Integer>list=new ArrayList<>();//与变量名无关
//省略add方法节省空间
for(Integer a:list){
if(a==30){
list.remove(a);
}
}
//这段代码就没有异常
ArrayList<String>arrayList=new ArrayList<>();
for(String s:arrayList){
if("3".equals(s)){
arrayList.remove(s);
}
}
为什么同样的形式上面会报并发修改异常、而下面的就不会
反编译源码形式也差不多
Iterator var2 = arrayList.iterator();
while(var2.hasNext()) {
String s = (String)var2.next();
if (s == "3") {
arrayList.remove(s);
}
}
Iterator var2 = arrayList.iterator();
while(var2.hasNext()) {
Integer a = (Integer)var2.next();
if (a == 30) {
arrayList.remove(a);
}
}