TreeMap 的實(shí)現(xiàn)就是紅黑樹數(shù)據(jù)結(jié)構(gòu),也就說是一棵自平衡的排序二叉樹,這樣就可以保證當(dāng)需要快速檢索指定節(jié)點(diǎn)。
10多年的浠水網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。網(wǎng)絡(luò)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整浠水建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“浠水網(wǎng)站設(shè)計”,“浠水網(wǎng)站推廣”以來,每個客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。TreeSet 和 TreeMap 的關(guān)系
為了讓大家了解 TreeMap 和 TreeSet 之間的關(guān)系,下面先看 TreeSet 類的部分源代碼:
public class TreeSetextends AbstractSet implements NavigableSet , Cloneable, java.io.Serializable { // 使用 NavigableMap 的 key 來保存 Set 集合的元素 private transient NavigableMap m; // 使用一個 PRESENT 作為 Map 集合的所有 value。 private static final Object PRESENT = new Object(); // 包訪問權(quán)限的構(gòu)造器,以指定的 NavigableMap 對象創(chuàng)建 Set 集合 TreeSet(NavigableMap m) { this.m = m; } public TreeSet() // ① { // 以自然排序方式創(chuàng)建一個新的 TreeMap, // 根據(jù)該 TreeSet 創(chuàng)建一個 TreeSet, // 使用該 TreeMap 的 key 來保存 Set 集合的元素 this(new TreeMap ()); } public TreeSet(Comparator<? super E> comparator) // ② { // 以定制排序方式創(chuàng)建一個新的 TreeMap, // 根據(jù)該 TreeSet 創(chuàng)建一個 TreeSet, // 使用該 TreeMap 的 key 來保存 Set 集合的元素 this(new TreeMap (comparator)); } public TreeSet(Collection<? extends E> c) { // 調(diào)用①號構(gòu)造器創(chuàng)建一個 TreeSet,底層以 TreeMap 保存集合元素 this(); // 向 TreeSet 中添加 Collection 集合 c 里的所有元素 addAll(c); } public TreeSet(SortedSet s) { // 調(diào)用②號構(gòu)造器創(chuàng)建一個 TreeSet,底層以 TreeMap 保存集合元素 this(s.comparator()); // 向 TreeSet 中添加 SortedSet 集合 s 里的所有元素 addAll(s); } //TreeSet 的其他方法都只是直接調(diào)用 TreeMap 的方法來提供實(shí)現(xiàn) ... public boolean addAll(Collection<? extends E> c) { if (m.size() == 0 && c.size() > 0 && c instanceof SortedSet && m instanceof TreeMap) { // 把 c 集合強(qiáng)制轉(zhuǎn)換為 SortedSet 集合 SortedSet<? extends E> set = (SortedSet<? extends E>) c; // 把 m 集合強(qiáng)制轉(zhuǎn)換為 TreeMap 集合 TreeMap map = (TreeMap ) m; Comparator<? super E> cc = (Comparator<? super E>) set.comparator(); Comparator<? super E> mc = map.comparator(); // 如果 cc 和 mc 兩個 Comparator 相等 if (cc == mc || (cc != null && cc.equals(mc))) { // 把 Collection 中所有元素添加成 TreeMap 集合的 key map.addAllForTreeSet(set, PRESENT); return true; } } // 直接調(diào)用父類的 addAll() 方法來實(shí)現(xiàn) return super.addAll(c); } ... }