用Arrays.sort对Java中的数组进行排序;

时间:2014-01-14 15:45:13

标签: java arrays sorting

我实现了自己的班级myclass。我写了以下代码进行排序

Arrays.sort(arrayForSortingInterval, new Comparator<myclass>() {
    public int compare(myclass o1, myclass o2) {
        return o1.minute <= o2.minute ? 1 : 0;
    }
});

我的数组声明为myclass[] arrayForSortingInterval = new myclass[lengthIntervalArray*2];,myclass有两个整数值minutetag

但是这个排序代码似乎不起作用。

4 个答案:

答案 0 :(得分:4)

compare方法需要在左对象小于右对象时返回负数,当两者相等时返回零,当左对象大于右对象时返回正数。实现此目的的一种方法是调用Integer.compare(假设minuteintmyclass}:

public int compare(myclass o1, myclass o2) {
    return Integer.compare(o1.minute, o2.minute);
}

答案 1 :(得分:3)

你的比较器错了。它应该:返回一个负整数,零或一个正整数,因为第一个参数小于,等于或大于第二个参数。

答案 2 :(得分:1)

你的比较器方法不正确,因为它不是反对称的(比较a到b返回1,然后b到a返回0)。

您只需返回o1.minute - o2.minute

即可

答案 3 :(得分:0)

您的比较函数-1, 0 or 1的误差小于等于或大于等等。

public int compare(myclass o1, myclass o2) {
  // return o1.minute <= o2.minute ? 1 : 0;
  if (o1.minute < o2.minute) {
    return -1;
  } else if (o1.minute > o2.minute) {
    return 1;
  }
  return Integer.compare(o1.tag, o2.tag);
}