在Java中有SortedSet和SortedMap接口。两者都属于Java Collections框架,并提供了一种访问元素的排序方式。

然而,在我的理解中,Java中没有SortedList。您可以使用java.util.Collections.sort()对列表进行排序。

知道它为什么是这样设计的吗?


当前回答

我们有Collections.sort(arr)方法,它可以帮助对ArrayList arr进行排序。要以desc方式排序,我们可以使用集合。排序(arr Collections.reverseOrder ())

其他回答

因为List的概念与自动排序集合的概念是不兼容的。List的意义在于调用List之后。添加(7,elem),调用list.get(7)将返回elem。在自动排序的列表中,元素可以位于任意位置。

我们有Collections.sort(arr)方法,它可以帮助对ArrayList arr进行排序。要以desc方式排序,我们可以使用集合。排序(arr Collections.reverseOrder ())

对于任何新手来说,从2015年4月开始,Android现在在支持库中有一个SortedList类,专门用于与RecyclerView一起工作。这是关于它的博客文章。

Set和Map是非线性数据结构。列表是线性数据结构。


树数据结构SortedSet和SortedMap接口使用常用的红黑树实现算法分别实现TreeSet和TreeMap。因此,它确保没有重复的项(或Map情况下的键)。

List已经维护了有序的集合和基于索引的数据结构,树不是基于索引的数据结构。 树根据定义不能包含重复项。 在List中,我们可以有副本,所以没有TreeList(即。没有SortedList)。 List按插入顺序维护元素。因此,如果我们想对列表进行排序,就必须使用java.util.Collections.sort()。它根据元素的自然顺序,将指定的列表按升序排序。

JavaFX 排序列表

虽然花了一些时间,但Java 8确实有一个排序的List。 http://docs.oracle.com/javase/8/javafx/api/javafx/collections/transformation/SortedList.html

正如您在javadocs中所看到的,它是JavaFX集合的一部分,旨在提供一个ObservableList上的排序视图。

更新:注意,在Java 11中,JavaFX工具包已经移到JDK之外,现在是一个独立的库。JavaFX 11可以作为可下载的SDK或从MavenCentral获得。参见https://openjfx.io