1、特點:
可以對鍵進行自然排序或指定排序 <<<<<<<<主要特點
2、數據結構: 紅黑樹
基於紅黑樹(Red-Black tree)實現。該映射根據其鍵的自然順序進行排序,或者根據創建映射時提供的 Comparator 進行排序,具體取決於使用的構造方法。
紅黑樹的特性:
(1)每個節點或者是黑色,或者是紅色。
(2)根節點是黑色。
(3)每個葉子節點(NIL)是黑色。 [注意:這裏葉子節點,是指爲空(NIL或NULL)的葉子節點!]
(4)如果一個節點是紅色的,則它的子節點必須是黑色的。
(5)從一個節點到該節點的子孫節點的所有路徑上包含相同數目的黑節點。
3、底層源碼分析:
(1)繼承關係:
繼承AbstractMap<K,V>類 實現 NavigableMap<K,V>, Cloneable, java.io.Serializable
(2)構造函數:(4個)
注意點1:
注意點2:
TreeMap()// 默認構造函數。使用該構造函數,TreeMap中的元素按照自然排序進行排列。
TreeMap(Map<? extends K, ? extends V> copyFrom)// 創建的TreeMap包含Map
TreeMap(Comparator<? super K> comparator)// 指定Tree的比較器
TreeMap(SortedMap<K, ? extends V> copyFrom) // 創建的TreeSet包含copyFrom
(3)默認值 :
Entry類中的color: black;
(4)增長方式:
擴容臨界:
(5)基本屬性:
Comparator<? super K> comparator; //比較器
Entry<K,V> root = null; //默認根節點、
內部類的
Entry{
V value;
Entry<K,V> left = null; //左孩子
Entry<K,V> right = null; //右孩子
Entry<K,V> parent; //父節點
boolean color = BLACK; //默認節點顏色:黑色
}
(6)增添查改