首先,-1表示小于,1表示大于,0表示等于.Comparable是内部比较器,Comparator是外部比较器。
假设,-1表示不需要调整前后顺序,1表示需要调整前后顺序。
对于Comparable接口,主要函数
int compareT(T o)
Student类实现了该接口,studeant有age,score,id属性。实现,按年龄递增排序。
public int compareTo(Student stu) { //覆写compareTo方法实现排序规则的应用
this.getScore() - stu.getScore();
}
理解:如果this.getScore() - stu.getScore()返回1,表示大于,表示需要调整,那么这是个递增排序。
要是实现,递减排序:
public int compareTo(Student stu) {
if(this.getScore() > stu.getScore())
return -1;
else if(this.getScore() < stu.getScore() )
return 1;
else
return 0;
}
理解:this.getScore() > stu.getScore()返回-1,表示不需要调整顺序,那么这是个递减顺序。
对于Comparator接口,主要函数:
int compare(T o1,To2)
public int compare(Student stu1,Student stu2) {
stu1.getScore() - stu2.getScore();
}
同样理解,这是递增顺序。
那么,改为stu2.getScore() - stu1.getScore()即可。