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

Java LinkedList safest way to delete while iterating

我记得很久以前(我认为那是一些 Java 的书),在遍历集合时删除元素的最安全方法是使用 iterator.remove.

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

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

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

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

来自the documentation

The iterators returned by this class's iterator and listIterator methods are fail-fast: if the list is structurally modified at any time after the iterator is created, in any way except through the Iterator's own remove or add methods, the iterator will throw a ConcurrentModificationException.