我看到一种奇怪的行为.
List<String> li = new ArrayList<>();
li.add("a");
li.add("b");
li.add("c");
li.add("d");
li.add("e");
for(String str:li){
if(str.equalsIgnoreCase("d")){
li.remove(str); //removing second last in list works fine
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试删除列表中的第二个以外的任何其他,我得到ConcurrentModificationException.在阅读"Oracle认证助理Java SE 7程序员学习指南2012"时,我注意到它错误地假设.remove()始终使用删除列表中倒数第二个的示例.