删除for-each循环中的元素时java.util.ArrayList和java.util.LinkedList的奇怪行为

时间:2016-03-06 19:34:47

标签: list arraylist foreach linked-list java-8

以下代码片段不会抛出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)

这有效吗?

0 个答案:

没有答案