小编典典

一个很好的Java排序列表

java

我正在寻找Java的良好排序列表。到处搜寻可以给我一些有关使用TreeSet /
TreeMap的提示。但是这些组件缺少一件事:随机访问集合中的元素。例如,我想访问排序集中的第n个元素,但是使用TreeSet时,我必须遍历其他n-1个元素,然后才能到达那里。因为我的集合中最多有数千个元素,所以这很浪费。

基本上,我正在寻找与.NET中的排序列表类似的东西,能够快速添加元素,快速删除元素以及对列表中的任何元素进行随机访问。

这种排序列表在某处实现了吗?谢谢。

已编辑

我对SortedList的兴趣来自于以下问题:我需要维护一个包含数千个对象的列表(并且可能会增长到数十万个)。这些对象将被持久化到数据库中。我想从整个列表中随机选择几十个元素。因此,我尝试维护一个单独的内存列表,该列表包含所有对象的主键(长数字)。当从数据库中添加/删除对象时,我需要从列表中添加/删除键。我现在正在使用ArrayList,但是当记录数量增加时,恐怕ArrayList不适合它。(想象一下,每次从数据库中删除对象时,都必须迭代数十万个元素)。回到我进行.NET编程时,我将使用有序列表(List是一个.NET类,一旦将Sorted属性设置为true,会维持其元素的顺序,并提供二进制搜索来帮助快速移除/插入元素)。我希望可以从Java
BCL中找到一些类似的东西,但不幸的是,我找不到合适的东西。


阅读 220

收藏
2020-09-15

共1个答案

小编典典

看来您想要一种具有非常快的删除速度并且可以 按索引
(而不是按键)时间进行随机访问的列表结构。一个ArrayList让你后者和HashMapTreeMap给你的前任。

您可能正在寻找Apache Commons
Collections中的一种结构,即TreeList。JavaDoc指定对其进行了优化,可以在列表中的任何索引处快速插入和删除。如果您还需要泛型,那将无济于事。

2020-09-15