Java通过引用从链表中删除节点
如何通过引用对象或特定节点有效地从java的LinkedList中删除节点?使用remove(object)遍历整个列表,如文档所示:“删除第一个元素e,以便(o==null?e==null:o.equals(e))”。我可以通过对节点的特定引用来删除吗?我不介意将对节点的引用存储在对象本身中。我不能使用列表的索引,因为它可能会更改。如果没有,是否有其他数据结构允许我执行此操作?您可能需要使用 如官方API所述,删除、插入通常为固定时间: 此类为基本操作提供恒定时间性能 (添加、删除、包含和大小),假设散列函数分散 将这些元件正确地安装在铲斗之间 如果您决定使用Java通过引用从链表中删除节点,java,data-structures,linked-list,Java,Data Structures,Linked List,如何通过引用对象或特定节点有效地从java的LinkedList中删除节点?使用remove(object)遍历整个列表,如文档所示:“删除第一个元素e,以便(o==null?e==null:o.equals(e))”。我可以通过对节点的特定引用来删除吗?我不介意将对节点的引用存储在对象本身中。我不能使用列表的索引,因为它可能会更改。如果没有,是否有其他数据结构允许我执行此操作?您可能需要使用 如官方API所述,删除、插入通常为固定时间: 此类为基本操作提供恒定时间性能 (添加、删除、包含和大小
HashSet
,请不要忘记覆盖对象中的equals
和hashcode
方法。您可能需要使用
如官方API所述,删除、插入通常为固定时间:
此类为基本操作提供恒定时间性能
(添加、删除、包含和大小),假设散列函数分散
将这些元件正确地安装在铲斗之间
如果决定使用HashSet
,请不要忘记覆盖对象中的equals
和hashcode
方法。尝试使用。它基本上是一个散列集
,其元素具有确定性排序。或者,您也可以将其视为一个链接列表
,由元素查找表支持
我相信删除(对象)
操作将是固定时间。尝试使用。它基本上是一个散列集
,其元素具有确定性排序。或者,您也可以将其视为一个链接列表
,由元素查找表支持
我相信
remove(Object)
操作将是常数时间。本质上你想要一个节点指针?你自己的链表?内置的链接列表
?如果是您自己的,则取决于您如何实现它。你试过什么?您能否发布相关代码,并描述您遇到的问题?至于其他数据结构,这取决于您的需求。你必须更具体一些。本质上你想要一个节点的指针?你自己的链表?内置的链接列表
?如果是您自己的,则取决于您如何实现它。你试过什么?您能否发布相关代码,并描述您遇到的问题?至于其他数据结构,这取决于您的需求。你必须更具体一些。我确实考虑过一个哈希表,但是我需要保存插入顺序。另外,当我想通过引用直接访问时,哈希似乎是一种解决方法。在这种情况下,@tskuzzy回答说,您需要一个LinkedHashSet
。但是哈希不是我考虑的一个哈希集,但我需要保留插入顺序。另外,当我想通过引用直接访问时,哈希似乎是一种解决方法。在这种情况下,@tskuzzy回答说,您需要一个LinkedHashSet
。但是哈希不是一个“解决方法”,谢谢,这非常接近我想要的。然而,当我希望通过引用直接访问时,哈希似乎仍然是一种解决方法。哈希集不允许重复。您可能需要定义equals和hashCode方法,并记住这一点。如果交互性能非常关键,您还需要注意初始容量。谢谢,这与我想要的非常接近。然而,当我希望通过引用直接访问时,哈希似乎仍然是一种解决方法。哈希集不允许重复。您可能需要定义equals和hashCode方法,并记住这一点。如果交互性能至关重要,您还需要注意初始容量