Java LinkedList 迭代时最安全的删除方式



我记得不久前(我认为这是一本Java书),在迭代集合时删除元素的最安全方法是使用iterator.remove

 while(iterator.hasNext())
 {
    if(it.next().condition())
      iterator.remove();
 }

由于我找不到该参考并需要相对快速的确认,因此一些Java老手可以确认这一点吗?

这是

在迭代过程中对LinkedList进行结构修改的唯一合法方法。

在迭代期间从链表中删除元素的任何其他方法(如果幸运的话)都会抛出ConcurrentModificationException

从文档中:

此类的 iteratorlistIterator 方法返回的迭代器是快速失败的:如果在创建迭代器后的任何时间对列表进行结构修改,则除了通过迭代器自己的removeadd方法之外,迭代器将抛出ConcurrentModificationException

最新更新