java - 在列表迭代期间从 java.util.List 中删除元素时引发 ConcurrentModificationException?

标签 java list concurrentmodification

@Test
public void testListCur(){
    List<String> li=new ArrayList<String>();
    for(int i=0;i<10;i++){
        li.add("str"+i);
    }

    for(String st:li){
        if(st.equalsIgnoreCase("str3"))
            li.remove("str3");
    }
    System.out.println(li);
}

当我运行这段代码时,我会抛出一个ConcurrentModificationException

当我从 list 中删除指定元素时,list 似乎不知道它的 size 已更改。

我想知道这是否是 collections 和删除元素的常见问题?

最佳答案

我相信这就是 Iterator.remove() 背后的目的。方法,以便能够在迭代时从集合中移除一个元素。

例如:

Iterator<String> iter = li.iterator();
while(iter.hasNext()){
    if(iter.next().equalsIgnoreCase("str3"))
        iter.remove();
}

关于java - 在列表迭代期间从 java.util.List 中删除元素时引发 ConcurrentModificationException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5113016/

相关文章:

java - 简单的递归阶乘函数

java - Android ItemTouchHelper 部分滑动

java - Apache HttpClient、基本身份验证和 session cookie

list - Shell 中 Sharepoint 2010 中的备份列表

c++ - STL 列表添加和删除所选元素

java - 尝试实现 Dijkstra 算法时出现 ConcurrentModificationException

java - 避免并发修改

java - 用户如何从随机数中进行加法?

java - 从列表中删除一个整数

Java:同时从不同的 ArrayLists 中删除两个对象