当前位置: 首页 > 面试题库 >

一个很好的Java排序列表

华瀚漠
2023-03-14
问题内容

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

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

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

已编辑

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


问题答案:

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

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



 类似资料:
  • 我正在做一个项目,所以我把我的问题简化为: 任何帮助都将不胜感激。

  • 注意:我不想使用任何库。试图解决https://icpc.kattis.com/problems/stacking 在以下条件下,合并排序数组所需的最小操作数是多少: 拆分:可以将单个堆栈拆分为两个堆栈,方法是将堆栈的任何顶部提起并放在一边,形成一个新堆栈。 连接:两个堆栈可以通过将一个放在另一个上面来连接。仅当顶部堆叠的底板不大于底部堆叠的顶板时,才允许这样做,也就是说,必须正确订购连接的堆叠。

  • 我有一个点列表,每个点都是一个大小为2的小列表。我想按x的递增顺序对点列表进行排序,如果x值相等,我就按y的递减顺序排序来打破平局。 我编写了一个自定义比较器来对点进行排序,如下所示: 以下是排序前的输入: 以下是使用上述比较器排序后产生的结果: 观察:- 输入按x的升序排序。 (5,12)被正确地放在(5,10)之前 (9,-15)被正确地放在(9,-1000)之前 然而,(10001,-10)

  • 我已经列出了对数。我想先根据键对它们进行排序,如果键相同,则根据值进行排序。 我尝试了以下代码,但引发了与类型不兼容的异常:无法推断类型变量T 错误: 不兼容的类型:无法推断类型变量T(参数不匹配;类对中的无效方法引用方法getKey无法应用于所需的给定类型:未找到参数:对象原因:实际参数列表和形式参数列表长度不同) 其中T、K、V是类型变量:T扩展在方法比较中声明的对象IT(ToIntFunct

  • 问题内容: 我在Java编程语言方面有丰富的经验。但是,我一直想到的一件事是,为什么必须要使用 它或其子类? 现在,使用,例如,在写入文件后,如果我们没有输出流,那么我们打算在文件中写入的数据将保留在缓冲区中,并且不会写入文件中。 因此,有必要成为一个。但是,我从来没有过之后任何痛苦的经历 不打烊 的。 但是仍然所有互联网和书籍上的文章都说,关闭任何Stream总是一件好事,不论它是还是an 。

  • 问题内容: 如何使用Collections.sort()或其他排序方法按字典顺序对Java中的列表列表进行排序? 问题答案: 您将必须实现自己的类并将实例传递给 然后分类很容易