Java TreeMap 簡單使用


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()
等等顧名思義

拓展:
紅黑樹


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM