根据引发的顺序对指定的列表进行排序 指定比较器。列表中的所有元素必须是相互的 使用指定的比较器进行比较(即c.compare(e1,e2) 不得为任何元素e1和e2抛出ClassCastException 列表)。
为什么不指定对象是按升序还是降序排序?在Comparator
界面compare
方法中,告知obj1
何时大于等于或小于obj2
。而已。文档没有说明列表是否按升序排序。我自己检查过,是的,它正在提升。
答案 0 :(得分:3)
没有"升序"或"降序"在您处理自定义Comparator
时,此处有意义。 Comparator
本身强加了一些顺序,可能是"提升"或"降序"就物体的自然排序而言,如果存在这样的自然排序。 sort
的文档可能错误表示"提升"因为如果你传递一个Comparator
来强制降序,那么排序将会下降。
错误发生在documentation for Comparator.compare。它说"少于"并且"大于"当它真的意味着"来到" "来自"。
定义降序的Comparator
不符合文档的这一特定方面,但这只是一个文档问题。 Comparator
的其余大部分文档都没有使用这个术语,只是正确地讨论了排序。
答案 1 :(得分:2)
根据给定的Comparator
(或元素的自然顺序,如果它们是Comparable
和Comparator
,集合按升序顺序排序没有提供)。
至于为什么文档没有明确说明 - 你必须要问JDK的作者,但在英语中很常见的是假设排序隐含意味着提升订单,这个惯例经常延续到软件工程。例如,在SQL中,order by
子句隐含地假设ASC
,即使它没有明确说明。
答案 2 :(得分:0)
排序顺序将由Comparator
或Comparable
的实施决定,因此Collections.sort
方法无法保证升序或降序。