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

Slo*_*out 4 java collections iterator

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

 while(iterator.hasNext())
 {
    if(it.next().condition())
      iterator.remove();
 }
Run Code Online (Sandbox Code Playgroud)

由于我找不到那个参考并需要相对快速的确认,有些java老手可以证实这一点吗?

aio*_*obe 5

这是在迭代期间进行结构修改的唯一合法方法LinkedList.

在迭代期间从链表中删除元素的任何其他方式将(如果你很幸运)抛出一个ConcurrentModificationException.

文档:

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