刚刚看了看,这个TreeSet是用TreeMap来实现的,键是不重复的,值为空
首先构造时:- public TreeSet(Comparator<? super E> comparator) {
- backingMap = new TreeMap<E, Object>(comparator);
- }
复制代码 然后赋值:- public TreeMap(Comparator<? super K> comparator) {
- if (comparator != null) {
- this.comparator = comparator;
- } else {
- this.comparator = (Comparator<? super K>) NATURAL_ORDER;
- }
- }
复制代码 当调用put方法时:- @Override public V put(K key, V value) {
- return putInternal(key, value);
- }
复制代码 在putInternal这个方法里有一个查找节点位置的方法find
在find方法里它会获取到一个comparison的int类型的比较结果
根据判断结果进行排序。(方法比较长,我就不贴了,有兴趣自己查查看)
|