保持Java集合的最有效方法?

时间:2013-05-08 02:55:44

标签: java data-structures collections

目前,我有一个存储自定义Node类的LinkedList。节点当前按顺序被删除并进行评估,这通常会将更多节点添加回LinkedList,将其视为队列。

但实际上我并不关心维持节点的顺序,因为它们被添加或删除的顺序并不重要。您可以从列表中删除第1个,第54个或第1032个节点,这没关系。重要的是节点正在快速处理,这意味着一个节点被删除(随机),变异,然后添加回来以及它的几个变体(再次顺序无关紧要)。

由于我无法找到Java Bag实现,维护此类集合的最有效方法是什么?谢谢你提前。

PS出于懒惰,我避免使用数组,因为理论上节点的集合在理论上可以从1节点到3 ^ 64节点大小,但它更可能保持在一百万以下。

1 个答案:

答案 0 :(得分:1)

这里的Java HashSetTreeSet类型可能很好,因为它们代表了支持快速插入和删除元素的无序元素集合。也就是说,你不可能在内存中保存3个 64 值,因为这个值接近3.4336838×10 30 ,这个数字比我所知道的任何数量的RAM都要大得多可以坚持。

编辑:根据所描述的用例(支持有效插入和删除随机元素),您可能希望采用方法described in this older question for building a data structure that does just that。直观地说,您将使用ArrayList,然后通过将元素交换到ArrayList的末尾并删除它们来删除元素。这样可以在极低的开销下进行O(1)插入和O(1)去除。

希望这有帮助!