首页  >  文章  >  Java  >  从 ArrayList 中删除元素时如何避免 ConcurrentModificationException?

从 ArrayList 中删除元素时如何避免 ConcurrentModificationException?

Barbara Streisand
Barbara Streisand原创
2024-10-30 20:34:30253浏览

How to Avoid ConcurrentModificationException When Removing Elements from an ArrayList?

从 ArrayList 遍历和删除元素时如何克服 ConcurrentModificationException

在并发删除元素的同时迭代 ArrayList 可能会触发臭名昭著的 java.lang.Error 错误。 util.ConcurrentModificationException。为了解决这个问题,有几个最佳实践需要考虑。

一种方法是创建一个单独的要删除的元素列表。在循环迭代期间,将这些元素添加到辅助列表中,迭代结束后,调用originalList.removeAll(valuesToRemove)方法。

或者,您可以直接在迭代器上使用remove()方法。请注意,此技术要求您避开增强的 for 循环。例如,要从列表中消除长度超过 5 的字符串:

List<String> list = new ArrayList<String>();

for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {
    String value = iterator.next();
    if (value.length() > 5) {
        iterator.remove();
    }
}

以上是从 ArrayList 中删除元素时如何避免 ConcurrentModificationException?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn