一、应用背景
在阿里巴巴开发手册中,有这样一条规定:不要在 foreach 循环里进行 add 和 remove 操作(这里指的是 List 的 add 和 remove 操作),否则会抛出 ConcurrentModificationException。remove 元素请应用 iterator。
二、源码
1. 咱们晓得 foreach 是语法糖,他实质还是 iterator 进行的循环,因而上面的代码和应用 foreach 循环是一样的。在循环外面咱们应用“谬误”操作,应用 List 的 add 办法进行操作,会抛出 ConcurrentModificationException
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("apple");
Iterator<String> iterator = arrayList.iterator();
while(iterator.hasNext()){String value = iterator.next();
if("apple".equals(value)){arrayList.add("orange");
}
}