集合TreeSet原理刨解JDK1.8(8)

TreeSet实现Set接口有序实现Comparable()接口才行,排重。底层基于TreeMap实现

构造方法
1.第一个默认构造方法创建对象, 对象要实现Comparable比较
2.第二个传入比较器,不要求对象实现Comparable。

    public TreeSet() {
        this(new TreeMap<E,Object>());
    }
    public TreeSet(Comparator<? super E> comparator) {
        this(new TreeMap<>(comparator));
    }

普通对象没有实现Comparable报错
集合TreeSet原理刨解JDK1.8(8)_第1张图片

	//构造方法创建调用m引用TreeMap,m位于TreeMap实现后面的NavigableMap
    private transient NavigableMap<E,Object> m;
    //默认值共享
    private static final Object PRESENT = new Object();

和TreeMap用法一样,主要是调用NavigatableMap()接口

  public boolean add(E e) {
        return m.put(e, PRESENT)==null;
    }

你可能感兴趣的:(Java提高篇)