关于JAVA的TreeSet

当对学生的姓名年龄进行排序的时候,创建好学生类,构建好方法,排序出错了?

报错的

原因是什么呢?

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;
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值