处理 ArrayList 迭代中的并发修改
当迭代 ArrayList 并同时删除元素时,您可能会遇到可怕的 java.util.ConcurrentModificationException 。要解决此问题,请考虑以下策略:
1.创建删除列表
维护要删除的元素的单独列表。在迭代过程中,只需将元素添加到此列表中,而不是直接从 ArrayList 中删除它们。迭代完成后,使用removeAll()方法一次性删除原始列表中所有累积的元素。这种方法可确保迭代期间不会发生任何修改,从而避免 ConcurrentModificationException。
2。使用 Iterator.remove()
直接利用迭代器的remove()方法。该技术需要使用传统的 for 循环而不是增强的 for 循环。迭代时,如果需要删除元素,只需在当前迭代器上调用remove()即可。这种方法会在迭代时修改底层列表,但它可以确保一致性并消除并发修改问题。
以上是在迭代期间从 ArrayList 中删除元素时如何避免 java.util.ConcurrentModificationException?的详细内容。更多信息请关注PHP中文网其他相关文章!