在java中执行排序的不同方法有哪些

时间:2010-09-27 11:15:39

标签: java

在一次采访中询问了这个问题。除了Collections.sort()之外,还有哪些其他方法。

5 个答案:

答案 0 :(得分:7)

排序接口

Comparable<T>Comparator<T>是所有标准Java排序选项使用的标准接口(除原始数组之外的所有选项都是如此)。

在Java语言中,任何实现Comparable的Class都有一个“自然顺序”。 (从技术上讲,它必须实现{E = 1}},其中E匹配自身,以获得自然顺序)。可以使用外部比较器对没有自然顺序的类进行排序。比较器也可用于实现针对自然顺序运行的排序顺序(例如,按字母顺序降序排序字符串)。

这些原则适用于SortedSet<E>SortedMap<K,V>实现,它们使用自然顺序或提供的比较器自动对元素/键进行排序。

这些相同的原则也可以在静态实用程序方法

中找到

可分别用于排序数组和列表,每个数组和列表都不支持自行排序。


番石榴

The Guava Library通过提供抽象Ordering类作为Comparable<? super E>的基本实现来进一步提高这一点,Comparator已经包含标准方法,例如提供自身的反向视图和许多方便的排序方法并根据此Ordering检索。


参考

有关Object Ordering的好文章可以在Sun Java Tutorial的Collection Trail中找到。

答案 1 :(得分:3)

  1. SortedSet或SortedMap,前提是密钥是唯一的。
  2. 的PriorityQueue。
  3. Arrays.sort()。
  4. 自己的代码。
  5. 带有ORDER BY子句的JDBC查询。
  6. 针对索引属性的LDAP搜索。
  7. 我确信还有更多。

答案 2 :(得分:2)

  1. 插入排序用于小尺寸阵列。
  2. Dual Pivot Quick Sort用于更大尺寸的阵列。
  3. MergeSort用于排序对象。

答案 3 :(得分:1)

Arrays.sort(..),或自行实施排序。

答案 4 :(得分:0)

您可以将数据粘贴到SortedSet(例如TreeSet)并通过遍历迭代器以排序顺序再次将其拉出。这不是一般的排序方法(因为它不允许重复的条目),但可以用于相当多的数据集。