我实现了自己的类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 有两个整数值minute
和tag
。
但是这个排序代码似乎不起作用。
compare
方法需要在左侧对象小于右侧对象时返回负数,当两个对象相等时返回零,当左侧对象大于右侧对象时返回正数。实现此目的的一种方法是调用Integer.compare
(假设minute
是myclass
类中的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);
}