【发布时间】:2014-02-13 04:17:17
【问题描述】:
我在 O(1) 时将 n 个条目推送到 Java LinkedList。
我想稍后在 O(1) 时删除一些独特的项目。
我想在LinkedList 处保留一个带有“指针”的数组,指向唯一节点,这样我以后可以删除它们。
有没有办法在 LinkedList 或任何其他 java 类上做到这一点?
我尝试将迭代器存储到项目中。所以我可以使用iter.remove()。但我知道当时列表上只能有一个迭代器。
我知道一个简单的解决方案可能是我自己实现链接列表。
但我宁愿使用LinkedList 或其他已经实现的Java 类。
【问题讨论】:
-
"但我知道当时列表上只能有一个迭代器。"这不是真的。
-
@LouisWasserman 即使他可以有多个迭代器,它会有帮助吗? “如果列表在迭代器创建后的任何时候在结构上被修改,除了通过
Iterator自己的删除或添加方法之外的任何方式,迭代器将抛出一个ConcurrentModificationException”。似乎如果他在一个迭代器上使用iter.remove删除一个元素,那么其他所有元素都将变得不可用。 -
@ajb:是的,你必须通过一个迭代器来完成所有这些操作,但如果元素不连续并且你有多个要处理的元素,你就无法做到这一点。
-
@LouisWasserman “但如果元素不连续并且你有多个要处理的元素,你就无法做到这一点” - 正是这种情况。
标签: java performance pointers linked-list