compareTo方法在java中返回什么

时间:2017-05-07 13:39:54

标签: java comparator compareto

我有一个代码片段,它在数组中找到中位数,然后对该数组进行排序取决于与中位数的接近程度(从最小到最大),但我无法理解这些东西是如何工作的

 public static Integer[] sort(Integer[] array)
    {
        Arrays.sort(array);
        final double median;
        if (array.length % 2 == 0)
            median = ((double)array[array.length/2-1]+ (double)array[array.length/2])/2;
        else
            median =  array [array.length/2];

        Comparator<Integer> compareToMedian= new Comparator<Integer>()
        {
            @Override
            public int compare(Integer o1, Integer o2)
            {
                double value = Math.abs(o1 - median) - Math.abs(o2 - median);
                if (value == 0)
                    value = o1 - o2;
                return (int)value;
            }
        };

        Arrays.sort(array, compareToMedian);
        return array;
    }

我真正感到困惑的是,在这种特殊情况下,确切的价值意味着什么。它只是将结果排序从最小到最大吗?就像我result在一种情况下等于-5,在另一种情况下等于-2并且最终变为-5,-2,3?并对阵列进行排序?

1 个答案:

答案 0 :(得分:1)

compareTo()返回一个int来显示哪个值更大

0如果两者相等

+ ve如果第一个值更大

-ve如果第二个值更大

compareTo(5,5)返回0

compareTo(6,5)返回任何正数

compareTo(5,6)返回任何负数

{{1}}