TreeMap繼承了AbstractMap,實現了NavigableMap(有序並支持搜索Map), Cloneable, java.io.Serializable
TreeMap基於紅黑樹
紅黑樹是一種平衡的二叉查找樹,特點如下
節點是紅色或者黑色
根節點是黑色
每個葉子的節點都是黑色的空節點
每個紅色節點的兩個子節點都是黑色的。
從任意節點到其每個葉子的所有路徑都包含相同的黑色節點
紅黑樹既保證了排序,又保證了最壞的時間復雜度
TreeMap基於紅黑樹 實現。該映射根據 其鍵的自然順序進行排序,或者根據 創建映射時提供的 Comparator 進行排序,具體取決於使用的構造方法。
TreeMap<Integer, Integer> treeMap = new TreeMap<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
});
treeMap.put(1, 1);
treeMap.put(10, 10);
treeMap.put(3, 3);
treeMap.put(2, 2);
treeMap.forEach((k,v) -> System.out.println("k:"+k+"v:"+v));
以上實現了倒序輸出該樹
TreeMap常用方法
get()
二叉樹的遍歷,根據當前節點的值與目標key值比較,選擇左右子樹
ceilingEntry()
獲取 大於等於 key的最小節點。當 key比樹中最大的key大時返回null
floorEntry()
獲取 小於等於 key的最大節點。當 key比樹中最小的key小時返回null
以及節點相關操作
put()
remove()
replace()
等等顧名思義
拓展:
紅黑樹