Java通过引用从链表中删除节点

时间:2014-03-28 20:32:47

标签: java data-structures linked-list

如何通过引用对象或特定节点从java的LinkedList中有效地删除节点?使用remove(object)对整个列表使用遍历,如文档所示:"删除第一个元素e,使得(o == null?e == null:o.equals(e))&# 34 ;.我可以通过特定的节点引用删除吗?我不介意将对节点的引用存储在对象本身中。我不能使用列表的索引,因为它可能会改变。如果没有,是否有其他数据结构可以让我这样做?

2 个答案:

答案 0 :(得分:2)

您可能想要使用HashSet

删除,插入通常是在常规时间内,如官方API所述:

  

此类为基本操作提供恒定的时间性能   (添加,删除,包含和大小),假设散列函数分散   桶中的元素

如果您决定使用HashSet,请不要忘记覆盖对象中的equalshashcode方法。

答案 1 :(得分:2)

尝试使用LinkedHashSet。它基本上是HashSet,其元素具有确定性排序。或者,您可以将其视为由元素查找表支持的LinkedList

我相信remove(Object)操作将是恒定时间。