Java之TreeSet除重、排序实现方式

本文介绍了Java中TreeSet如何实现除重和排序。通过compareTo方法进行元素比较,实现自然排序。当对象为自定义类时,需实现Comparable接口重写compareTo方法。此外,可以通过传入Comparator实现自定义排序。文章提供了示例代码,展示了两种排序方式的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TreeSet:接口Set的一个实现类,除了具有除重的功能外与还可以对集合对象进行排序。

compareTo方法:实现除重和排序。当返回负数(小于)则存在左边,返回正数(大于)则存在右边,返回0(相等)则不存。

使用方式:

①自然排序

TreeSet类的add()方法中会把存入的对象提升为Comparable类型

调用对象的compareTo()方法和集合中的对象比较  //若对象为自定义对象,调用add时没有实现Comparable接口重写compareTo                                                                                         方法会报错,因为系统无法进行比较。

根据compareTo()方法返回的结果进行存储

示例:在Worker类中重写compareTo方法,根据年龄排序从小到大排序。

输出结果:

②比较器顺序

创建TreeSet的时候可以指定一个Comparator      //创建一个比较器类实现Comparator接口,重写compare方法

如果传入了Comparator的子类对象,那么TreeSet就会按照比较器中的顺序排序

add()方法内部会自动调用Comparator接口中compare()方法排序

示例:先创建一个Comparator接口的实现类,重写compare方法。

输出结果:

两种方法的区别:

TreeSet构造函数什么都不传,默认按照类中Comparable的顺序(没有就报错ClassCastException)

TreeSet如果传入Comparator,就优先按照Comparator

觉得有用的小伙伴请点赞、评论或收藏一下多支持支持博主小弟,跪安~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值