当对学生的姓名年龄进行排序的时候,创建好学生类,构建好方法,排序出错了?
报错的
原因是什么呢?
public interface Comparable<T>
该接口对实现它的每个类的对象强加一个整体排序。 这个排序被称为类的自然排序 ,类的compareTo方法被称为其自然比较方法 。
//必须连接接口Comparable,才能实现自然排序
public class Students implements Comparable<Students> {
学生类必须继承该接口,才可以进行排序.
重写comparaTo方法,进行排序
@Override
public int compareTo(Students o) {
return 0;
}
为什么会是有问题呢?明明写了四个,只进去一个呢?
这就是重写的comparaTo方法了
return 0;
负整数,零或正整数,因为该对象小于,等于或大于指定对象。
要改变return的值,才可以让他们都排列进去。
public int compareTo(Students o) {
// return 0;
//根据年龄进行排序 this.age是当前的年龄,o.age是上一个同学的年龄
int i=this.age-o.age;
return i;
}
但是当年龄相同时怎么排序的?
@Override
public int compareTo(Students o) {
// return 0;
//根据年龄进行排序 this.age是当前的年龄,o.age是上一个同学的年龄
int i =this.age - o.age;
//当年龄相同时,比较名字
int j = i==0?this.name.compareTo(o.name):i;
//return i;
return j;
}