从 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中文网其他相关文章!