TreeMap源码分析
java.util.TreeMap 类继承了 java.util.AbstractMap 抽象类,实现了 java.util.NavigableMap、java.lang.Cloneable、java.io.Serializable 接口。

一、TreeMap特点或规范
TreeMap 是基于 红黑树 的 NavigableMap 实现。根据其 key 的 自然顺序 进行排序,或者根据使用的构造器在 Map 创建时提供的比较器进行排序。
由于底层采用了红黑树的数据结构,因此 TreeMap 的查询方法,如:containsKey(),get(),put(),remove(),其时间复杂度均为:O(logn)。
注意:TreeMap 不同步。
如果多个线程同时访问,并且至少有一个线程进行了结构上的修改,则必须在外部进行同步;如下:
SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));
注意:此类中的方法返回的所有 Map.Entry 都它们不支持 Entry.setValue() 方法;可以使用 put(K, V) 方法更改 Entry 中的值。
二、成员变量
2.1 常量
1 | |
2.2 变量
1 | |
三、构造器
3.1 遵循Map接口的构造器规范
1 | |
3.2 遵循SortedMap接口的构造器规范
1 | |
四、方法分析
TreeMap 中的方法分为以下几类。
4.1 实现自Map接口的方法
4.2 实现自SortedMap接口的方法
4.3 实现自NavigableMap接口的方法
4.4 继承自AbstractMap接口的方法
4.5 TreeMap自身方法
TreeMap 中的大部分方法与 HashMap.TreeNode 内部类相似,都使用了 红黑树 结构,变色、左旋、右旋 等基本操作也十分相似。
TreeMap源码分析
https://cuilan.github.io/2019/09/17/java/util/TreeMap-source-analysis/