List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
for (String str : list) {
if ("aaa".equals(str)) {
list.remove(str);
}
}
System.out.println(list);
remove 的时候触发执行了 checkForComodification 方法,该方法对 modCount 和 expectedModCount 进行了比较,发现两者不等,就抛出了 ConcurrentModificationException 异常。
foreach本质上是语法糖,底层代码调用的是迭代器和while循环来进行实现的,遍历集合确实很方便,但是如果进行 增删 操作就不行了