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
觉得有用的小伙伴请点赞、评论或收藏一下多支持支持博主小弟,跪安~~