我实现了自己的班级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
。
但是这个排序代码似乎不起作用。
答案 0 :(得分:4)
compare
方法需要在左对象小于右对象时返回负数,当两者相等时返回零,当左对象大于右对象时返回正数。实现此目的的一种方法是调用Integer.compare
(假设minute
类int
为myclass
}:
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);
}