【发布时间】:2011-03-24 23:33:04
【问题描述】:
我有一个包含一些特殊元素的元素列表,我需要在恒定时间内找到这些元素的邻居。使用双向链表这听起来很容易:只需存储对包含这些特定元素的节点的引用并检查它们的上一个和下一个节点。 (我也更喜欢使用链表,因为我经常删除和添加元素。链表很大,性能尤为重要。)
但是,Java 的 LinkedList 似乎不允许我存储包含元素的节点。是对的吗?如果是这样,是否有一种干净的方式来做我需要做的事情?这应该不难,但我没有找到解决方案。
这需要与不断变化的列表一起工作,并且我不希望在更改期间不必更新任何内容(例如,如果我使用数组,则每当它们在数组中移动时,我都必须不断更新它们的索引)。此外,我将来可能需要从那个特殊节点开始遍历列表而不浪费时间找到那个节点(这在链表的低级实现中也很容易),所以我会更加感谢一个解决方案也解决了这个问题。
编辑:感谢您的回答。不过,我希望有一个不涉及实现我自己的链表版本的解决方案。有吗?
【问题讨论】:
-
我可能错了,但扩展
AbstractSequentialList似乎是您对我的最佳选择。 -
一个 ArrayList 会做你想做的事。
-
@Romain Hippeau 修改数组列表是相当昂贵的。
-
实现我自己的双向链表是一种解决方案,但对我来说工作越少越好。 :) 感谢您的回复。
-
“不过,我希望有一个不涉及实现我自己的链表版本的解决方案。有吗?” - 尝试为某人找到解决方案已经实施。但是要求>>我们
标签: java data-structures linked-list