我想在Java中实现Aaron William的多集置换迭代算法。算法白度。重要的是,该算法使用一个链表来表示多个集合,包括保持指向各个链表节点的多个指针,跟踪头节点,以及从指针中获取下一个节点。
我知道内置的LinkedList实现没有提供这些特性,我还认识到,滚动自己的链接列表实现对于这项任务来说是微不足道的。然而,让我印象深刻的是,为了遵守列表接口而编写所有样板代码并不那么简单--比如说,我想用Collections.Sort对我的列表进行排序!我还想到,存储我单独列表实现的任何集合的输入都会有某种程度的存储重复。
我的问题是:是否存在,另一种提供这些特性的原生Java数据结构?,当然,我的目标远远不够独特,不足以要求我自己的链接列表实现。
发布于 2016-08-03 02:00:33
Java LinkedList节点条目不是公共的,因此它不适合于某些用例,即在某个位置查找、删除或添加某个元素是非常昂贵的。我也遇到了类似的问题,需要节点访问才能有效地删除项并将其推到列表的顶部。
我想出了一个专门的双链接列表实现。我直接将节点结构存储在元素中,即元素是从节点派生出来的。这样做的好处是,操作列表不需要任何内存分配。但是,缺点是元素只能是一个列表的一部分。如果不想将节点存储在元素中,只需创建一个包含元素的包装节点类.
https://stackoverflow.com/questions/37912669
复制相似问题