TreeSet集合存放自定义类型的对象,可以使用比较器,实现Comparable接口自己设置排序方式

TreeSet集合
* 其中的元素按照自然顺序进行排序的
* 注意:在此类集合中,只能存放同一类型的元素
* 如果集合中的元素为自定义类型的对象,有以下两种方式可以自己设置排序方式:
* 1.自定义的类必须实现java.lang.Comparable接口,并且实现其中的抽象方法

* 2.根据自定义类写一个比较器的类,该比较器必须实现java.util.Comparator接口,并且实现接口的抽象方法,在创建TreeSet对象时,将比较器对象传入。

         第一种

         实现Comparable接口,实现compareTo(Object o) 方法

 @Override

public int compareTo(Object o) {
if(o instanceof Person){
Person p=(Person) o;
if(this.age<p.age){
return -1;
}else if(this.age>p.age){
return 1;
}else{
return 0;
}
}
return 0;
}

       实现的抽象方法compareTo在TreeSet集合放入类对象时被调用,并且是放入的类对象跟集合前面的类对象比较。即this指当前类对象,Object o指前面的那些对象。所以此处是正序排列,当前对象的属性值大时返回为正数。

        第二种

        写一个比较器的类实现java.util.Comparator接口,实现compare(Object o1, Object o2) 方法

@Override

public int compare(Object o1, Object o2) {
if(o1 instanceof Student && o2 instanceof Student){
Student s1=(Student)o1;
Student s2=(Student)o2;
int id = s1.getStuId()-s2.getStuId();
//当前对象减参数对象返回值,是从小到大
return id;
}
return 0;
}

*o1相等于java.lang.comparable接口中的conparaTo()方法的当前对象
*o2相等于 java.lang.comparable接口中的conparaTo()方法的参数对象

此比较器排序为正序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值