概述
本文是基于jdk8_271版本进行分析的。
TreeMap是一个有序的key-value双列集合,底层基于红黑树实现。该映射根据其键的自然顺序进行排序,或者根据创建时提供的Comparator进行排序
数据结构
-
实现继承关系
1 public class TreeMap<K,V>
2 extends AbstractMap<K,V>
3 implements NavigableMap<K,V>, Cloneable, java.io.Serializable
- AbstractMap:继承AbstractMap抽象类,使用实现的公共方法。
- NavigableMap:NavigableMap继承SortedMap接口,对SortedMap进一步扩展,它是一个可导航的键-值对集合。具有了为给定搜索目标报告最接近匹配项的导航方法。
- Cloneable:重写拷贝方法。
- Serializable:重写序列化方法。
-
成员变量
1 // 比较器
2 private final Comparator<? super K> comparator; 3 // 根节点
4 private transient Entry<K,V> root; 5 // 元素总数量
6 private transient int size = 0; 7 // 修改次数
8 private transient int modCount = 0;
- 构造函数
1 public TreeMap() { 2 comparator = null;
3 }
4 public TreeMap(Comparator<? super K> comparator) { 5 this.comparator = comparator; 6 }
7 public TreeMap(Map<? extends K, ? extends V> m) { 8 comparator = null;
9 putAll(m); 10 } 11 public TreeMap(SortedMap<K, ? extends V> m) { 12 comparator = m.comparator(); 13 try { 14 buildFromSorted(m.size(), m.entrySet().iterator(), null, null); 15 } catch (java.io.IOException cannotHappen) { 16 } catch (ClassNotFoundException cannotHappen) { 17 } 18 }
作者: Yanci丶
出处:https://www.cnblogs.com/Y2EX/p/14811286.html