JDK 1.8 TreeSet 源码分析

    /**
     * TreeSet的特点: 无序  唯一 需要比较器 自定义<>中的内容需要实现comparable的接口 推荐外部实现:多态,自定义多种规则
     * 底层实现逻辑: 二叉红黑树  treemap实现
     */
public class TreeSet<E> extends AbstractSet<E>
    implements NavigableSet<E>, Cloneable, java.io.Serializable
    
    // 存放数据的地方
        private transient NavigableMap<E,Object> m;

    // 填充map的vaule
    private static final Object PRESENT = new Object();
    
     TreeSet(NavigableMap<E,Object> m) {
        this.m = m;
    }
    public TreeSet() {
        this(new TreeMap<E,Object>());
    }
        public boolean add(E e) {
        return m.put(e, PRESENT)==null;
    }
}
   
posted @ 2023-01-18 16:25  李悠然  阅读(12)  评论(0编辑  收藏  举报