Java的Collections.sort(list,comparator)的排序顺序是什么?从小到大还是从大到小?

2022-09-01 01:31:58

显然,它没有记录,或者我错过了它。

以下是文档的链接,以下是图像形式的文本:

编辑(17/5):我认为太多人混淆了这个问题,不能成为一个比较问题。事实并非如此。比较器在2个元素之间进行比较。根据这种比较,列表排序。如何?上升还是下降?

我将进一步完善/简化这个问题:如果比较器确定元素A小于元素B。在排序列表中,元素A的索引是否低于元素B?

enter image description here


答案 1

排序顺序始终是升序的,其中比较器定义哪些项目比其他项目大。

Collections.sort(List<T> list, Comparator<? super T> c) 的文档:

根据指定比较器诱导的顺序对指定的列表进行排序。

来自 Comparator.compare(T,T) 的文档

比较其两个参数的顺序。返回负整数、零或正整数,因为第一个参数小于、等于或大于第二个参数。


答案 2

您(或者更确切地说,是您的比较者)决定。

  • 如果你的 返回值为负数 当 小于 时,你会得到升序(ideone 上的演示)。Comparatorcompare(T o1, T o2)o1o2
  • 如果你的 返回值为负数 当 大于 ,则得到降序(ideone 上的演示)。Comparatorcompare(T o1, T o2)o1o2

另一种说法是,假设比较器对传入它的两个项目进行排序,从较小的()到更大的(),并产生与该顺序一致的升序排序。sorto1o2


推荐