目錄
元素結構treemapentry
存放元素的邏輯
獲取元素
static final class treemapentryimplements map.entry
public v put(k key, v value)
int cmp;
treemapentryparent;
comparator<? super k> cpr = comparator;
//更父節點比較,小於放左邊,大於放右邊。直到父節點為空的時候
if (cpr != null) while (t != null);
}// 如果比較器物件為空,使用預設的比較機制
else while (t != null);
}treemapentrye = new treemapentry<>(key, value, parent); // 根據key找到父節點後新建乙個節點
// 根據比較的結果來確定放在左子樹還是右子樹
if (cmp < 0)
parent.left = e;
else
parent.right = e;
fixafterinsertion(e);
size++; // 集合大小+1
modcount++;
return null;
}
public v get(object key)
final treemapentrygetentry(object key)
return null;
}
還是從頭節點,乙個個做比較,最後找到key的位置,然後獲取其值 TreeMap 原始碼分析
treemap底層是使用紅黑樹實現的儲存鍵值對的map容器,可以通過比較器進行排序。紅黑樹本質上是一棵弱平衡二叉樹,它的節點有紅色和黑色兩種顏色。主要特性有五點。1 每個節點或者是黑色,或者是紅色。2 根節點是黑色。3 每個葉子節點 nil 是黑色。注意 這裡葉子節點,是指為空 nil或null 的...
TreeMap原始碼分析
public v put k key,v value int cmp entryparent split comparator and comparable paths comparator cpr comparator if cpr null while t null else while t n...
TreeMap原始碼分析
基於紅黑樹的實現,根據key的自然順序排序,或者根據構造方法傳入的排序方式。構造方法傳入的比較器 藉此維護鍵的順序 private final comparator super k comparator private transient entry root 根節點 private transie...