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

swa*_*hvi 4 java

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

Sea*_*oyd 7

排序接口

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

在Java语言中,任何实现Comparable的类都具有"自然顺序".(从技术上讲,它必须Comparable<? super E>在E匹配自身的地方实现,以获得自然顺序).可以使用外部比较器对没有自然顺序的类进行排序.比较器还可用于实现针对自然顺序运行的排序顺序(例如,按字母顺序降序排序字符串).

这些原则也适用于无论是在SortedSet<E>SortedMap<K,V>实施方式中,那种其元件/自动按键使用任一的自然顺序或供给比较器.

在静态效用方法中也可以找到这些相同的原理

它可以分别用于排序数组和列表,每个数组和列表都不支持自己排序.


番石榴

Guava库通过提供抽象Ordering类作为基本实现来进一步实现Comparator这一点,其中已经包含标准方法,例如提供自身的反向视图以及基于此的排序和检索的许多便利方法Ordering.


参考

有关对象排序的好文章可以在Sun Java Tutorial的Collection Trail中找到.