[英]Java delete node from linked list by reference
如何通过引用对象或特定节点有效地从Java的LinkedList中删除节点? 使用remove(object)在整个列表上使用遍历,如文档所示:“删除第一个元素e,使得(o == null?e == null:o.equals(e))”。 是否可以通过特定引用删除节点? 我不介意将对节点的引用存储在对象本身中。 我不能使用列表的索引,因为它可能会更改。 如果没有,是否还有其他数据结构可以使我做到这一点?
您可能要使用HashSet
如官方API所述,删除,插入通常会在固定时间内进行:
该类为基本操作(添加,删除,包含和大小)提供恒定的时间性能,假设哈希函数将元素正确地分散在存储桶中
如果您决定使用HashSet
,请不要忘记在对象中覆盖equals
和hashcode
方法。
尝试使用LinkedHashSet 。 它基本上是一个HashSet
,对其元素具有确定的顺序。 或者,您也可以将其视为由元素查找表支持的LinkedList
。
我相信remove(Object)
操作将是恒定时间的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.