以下是我的代码段。 oracle上的java文档说,在迭代时删除列表元素的唯一正确方法是通过迭代器的remove方法。
但是在下面的代码片段中,我通过列表的remove方法删除了,但是没有得到任何异常。
为什么会这样呢?

在NetBeans上使用JDK 12

List<String> emps = new ArrayList<>();
emps.add("trump");
emps.add("angela");
emps.add("jinping");
emps.add("trudeau");

System.out.println(emps.size());

for (int i = 0; i < emps.size(); i++) {
    if ("trudeau".equalsIgnoreCase(emps.get(i))) {
        emps.remove(emps.get(i));
    }
}

System.out.println(emps.size());

最佳答案

仅当使用迭代器进行迭代(请考虑ConcurrentModificationException)时,才会获得for(String emp : emps),而不是使用基于int的索引时。

10-08 09:08