如何避免“ConcurrentModificationException"在迭代时从`ArrayList`中删除元素?

2022-01-10 00:00:00 list arraylist iterator java

我正在尝试从 ArrayList 中删除一些元素,同时像这样迭代它:

I'm trying to remove some elements from an ArrayList while iterating it like this:

for (String str : myArrayList) {
    if (someCondition) {
        myArrayList.remove(str);
    }
}

当然,在迭代 myArrayList 的同时尝试从列表中删除项目时,我得到了 ConcurrentModificationException.有没有一些简单的方法可以解决这个问题?

Of course, I get a ConcurrentModificationException when trying to remove items from the list at the same time when iterating myArrayList. Is there some simple solution to solve this problem?

推荐答案

使用 Iterator 并调用 remove():

Iterator<String> iter = myArrayList.iterator();

while (iter.hasNext()) {
    String str = iter.next();

    if (someCondition)
        iter.remove();
}

相关文章