Java LinkedList节点操作

时间:2016-06-19 22:56:27

标签: java data-structures linked-list

我想在Java中实现Aaron William的Multiset Permutation迭代算法。 Algorithm Whitepaper。重要的是,该算法使用链表来表示多集,并涉及保持指向各种链表节点的几个指针,跟踪头节点,以及从指针获取下一个节点。

我知道内置的LinkedList实现不提供这些功能。我也认识到滚动我自己的链表实现对于这项任务来说是微不足道的。然而,让我感到震惊的是,编写所有样板代码来表示List接口并不是那么简单 - 比如说我想用Collections.Sort对列表进行排序!这也让我觉得,无论从哪个集合的输入中存储我的单独列表实现,都会有一定程度的存储重复。

我的问题:是否有另一个原生Java数据结构,它提供了这些功能?当然,我的目标远不够独特,不需要我自己的链表实现。< / p>

1 个答案:

答案 0 :(得分:0)

Java LinkedList节点条目不公开,因此它不适用于某些用例,即在某个位置查找,删除或添加某个元素是昂贵的。我有一个类似的问题,我需要节点访问,以有效地删除项目并将其推送到列表的顶部。

我想出了一个专门的双链表实现。我将节点结构直接存储在元素中,即元素是从节点导出的。这具有以下优点:操纵列表不需要任何内存分配。但是,缺点是元素只能是一个列表的一部分。如果您不想将节点存储在元素中,只需创建一个包含元素的包装器节点类......

实施:DoubleLinkedList 和测试: DoubleLinkedListTest