在 TreeSet 中 NavigableMap 的 put() 方法的实现在哪里?

San*_*rog 1 java

我只是想调试 TreeSet 的方法 add() 是如何工作的,特别是如何在 TreeSet 内部组织排序过程。

所以当我们查看 TreeSet 类的内部时,我们会看到方法 add(E e)

    public boolean add(E e) {
        return m.put(e, PRESENT)==null;
    }
Run Code Online (Sandbox Code Playgroud)

好的,什么是m变量?

    private transient NavigableMap<E,Object> m;
Run Code Online (Sandbox Code Playgroud)

好吧,我们从Map接口中搜索put()方法的实现......嗯...... 最好的东西,能找到的是TreeMap中的实现......但是TreeSet的具体实现在哪里?

Era*_*ran 5

TreeSet利用TreeMap其后盾的执行Map,你可以在构造函数看到:

public TreeSet() {
    this(new TreeMap<E,Object>());
}

public TreeSet(Comparator<? super E> comparator) {
    this(new TreeMap<>(comparator));
}
Run Code Online (Sandbox Code Playgroud)

因此 的TreeMap实现put()被 使用TreeSet