小编ami*_*kle的帖子

Java list的.remove方法仅适用于每个循环内部的倒数第二个对象

我看到一种奇怪的行为.

    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()始终使用删除列表中倒数第二个的示例.

java foreach

10
推荐指数
2
解决办法
3879
查看次数

标签 统计

foreach ×1

java ×1