关于java中的compareTo()方法

时间:2016-03-11 16:29:09

标签: java

我对Java中compareTo()方法的工作原理感到非常困惑。在通过Collections.sort()方法传递列表时,哪些对象实际上被比较以返回负值或正值或零值?

3 个答案:

答案 0 :(得分:0)

用于排序。因此,所有元素都进行了比较,最终用于排序。

答案 1 :(得分:0)

所有这些,其中大多数都是好几次。您的问题实际上是"排序工作如何" ,这对于StackOverflow而言过于宽泛。

然而,简化的答案是该算法在每次调用compareTo()时比较元素对,以决定哪一个是"更小" (对于"较小"的某些定义)。良好的排序算法尽量减少比较次数,但每个元素必须与其他一些元素进行比较(其中该数字通常> 1)。

compareTo()存在的原因是它允许您决定什么"较小的"并且"更大"对您的对象意味着什么,允许您根据需要对它们进行排序。

答案 2 :(得分:0)

说出您的列表是List<Integer>,其值为[5, 7, 3]Integer有一个compareTo()

确切的排序方法取决于算法,但让我们尝试一个简单的bubblesort。

  • 5.compareTo(7)&lt; 0:无需采取行动
  • 7.compareTo(3)&gt; 0:交换元素

列表现在是[5, 3, 7]

  • 3.compareTo(5)&gt; 0:交换元素

列表现在是[3, 5, 7],排序已经完成。

在此特定示例中,所有元素最终都与所有其他元素进行比较。这种情况很少发生,因为智能排序算法可以最大限度地减少必要的比较次数。