【问题标题】:Java LinkedList safest way to delete while iteratingJava LinkedList 迭代时最安全的删除方式
【发布时间】:2015-04-18 21:34:23
【问题描述】:

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

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

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

【问题讨论】:

标签: java collections iterator


【解决方案1】:

这是在迭代过程中唯一在结构上修改LinkedList 的合法方式。

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

来自the documentation

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-31
    • 2013-03-23
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    相关资源
    最近更新 更多