TreeSet问题//
来源:5-5 关于TreeSet的使用
tttjh_
2021-02-03 23:43:22
问题描述:
1、如下两张图片,提到了像Comparable不需要像Comparator接口那样,传入比较器实现类的对象,且在第二张图片中,为什么不需要调用Collections.sort()方法来进行排序比较,那么是如何进行比较的呢?过程中哪一步代码开始进行了排序比较,,
2、如第三张图片所提及的红黑树,在之前的视频中提到的不是TreeMap是基于红黑树实现的,而TreeSet是基于二叉树实现的吗,两者有何区别呢,,
3、第三张图片中的comparTo方法写法的思路是什么,假如我只按年龄进行排序呢,又该如何实现
相关截图:



1回答
同学你好,1、Comparable接口用于在类内部定义比较规则,一个类只能定义一个。
实现了Comparable接口的类,在添加到集合中时,会在底层自动调用重写后的compareTo方法,所以对应直接调用sort方法,指定集合名称就可以。
同学不需要深究在底层中是哪一步开始调用的。
2、
1)TreeSet是基于二叉树实现的。
2)区别:红黑树是在查找删除时进行特定操作以维持高性能的特定的平衡二叉树。红黑树相对于普通的二叉树。
3、可以这样理解:
int num=this.name.length()-s.name.length();//比较姓名的长度
int num1=num==0?this.name.compareTo(s.name):num;//当比较长度之后,在进行姓名是否相等判断以及排序
int num2=num1==0?this.age-s.age:num1;//对年龄进行比较
同学是想说如下的compareTo方法,想修改为对年龄排序吗?如果是,同学对age进行排序就可以。
祝学习愉快!
相似问题