如何通过对对象的引用或特定节点从Java的LinkedList 中有效地删除节点?使用remove(object)会对整个列表进行遍历,这在文档中有所体现:“删除第一个元素e,使得(o==null ? e==null : o.equals(e))”。我可以通过节点的具体引用来移除吗?我不介意将节点的引用存储在对象本身中。我不能使用列表的索引,因为它可能会改变。如果不行,是否有其他数据结构可以实现此操作?
如何通过对对象的引用或特定节点从Java的LinkedList 中有效地删除节点?使用remove(object)会对整个列表进行遍历,这在文档中有所体现:“删除第一个元素e,使得(o==null ? e==null : o.equals(e))”。我可以通过节点的具体引用来移除吗?我不介意将节点的引用存储在对象本身中。我不能使用列表的索引,因为它可能会改变。如果不行,是否有其他数据结构可以实现此操作?
LinkedHashSet
。但是哈希不是“变通方法”。 - cheseauxHashSet
,其元素具有确定性顺序。或者,您可以将其视为由元素查找表支持的LinkedList
。remove(Object)
操作将是常数时间。
LinkedList
?如果是你自己实现的,那就取决于你的实现方式。你尝试过什么?能否发布相关代码并描述你遇到的问题?至于其他数据结构,它取决于你的需求。你必须更具体地说明。 - Jason C