以下是我的代码段。 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
的索引时。