A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

源代码分析 :
1.        当装入第一个元素时,因为集合中没有其它元素,那么它就是根
2.        所有元素在装入时,如果是小的一直放在左边,大的放在右边,相等的不装入。

问题:怎样比较的集合中的元素?
        在源代码中有:
        Comparator------比较器
Comparable----- 自然顺序

什么是自然顺序?
实现了Comparable接口的类就具有了自然顺序,它比较时是通过接口中要重写的方法compareTo来完成的,这个方法返回的是int类型的值,0代表的是等于,负数代表的是小于,正数代表的是大于.

比较器:在创建TreeSet时指定一个比较器
比较器就是实现了Comparator接口的一个类,那么这个类需要重写接口中一个方法compare,这个方法返回的是int类型值,它的原理与compareTo方法一样。
对于TreeSet集合,它的元素必须具有自然顺序或者指定比较器,才可以装入到TreeSet集合中。

基于 TreeMap 的 NavigableSet 实现。
使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,
具体取决于使用的构造方法。
TreeSet保证元素唯一以及排序:
1.        new TreeSet();----在TreeSet底层使用的是一个NavigableMap
2.        当调用put方法是,我们通过源代码连接时,是链接到Map接口,接口中没有具有的方法实现,这时我们就可以在Map接口中查找它的实现类   NavigableMap接口。
3.        在NavigableMap这个接口中也没有put方法实现,那么在看这个接口的实现类,
TreeMap中有put方法实现


123456.png (98.16 KB, 下载次数: 1)

123456.png

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马