以下代码片段不会抛出java.util.ConcurrentModificationException
,但如果我尝试删除任何其他元素,我会得到(预期的)。
List<String> list = new ArrayList<>();
list.add("0");
list.add("1");
list.add("2");
list.add("3");
for (String el : list) {
if (el.equals("2")) {
list.remove(el);
}
}
如果我使用java.util.LinkedList
而不是java.util.ArrayList
,那么事情会变得更有趣,其中最后一个元素也会出现相同的行为。
由于检查java.util.ArrayList:L846。
,会发生此行为我使用的JDK版本是:
java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)
这有效吗?