我只是想调试 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的具体实现在哪里?
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。