Sorting Array in Java by Arrays.sort;



我实现了自己的类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

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

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

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

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

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

您应该简单地返回o1.minute - o2.minute

您的比较函数不正确,分别-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);
}

最新更新