1. 導讀
2. HashMap::put源碼解析
.7 退出循環後再判斷相同key能否覆蓋, 能覆蓋時直接覆蓋, 並返回結果;
.2 判斷待插入節點位於左子樹還是右子樹, key相等時直接返回, 由主流程判斷是否更新節點值;
static int tieBreakOrder(Object a, Object b) {
.2 當第一步的結果為0, 或者至少有一個對象為空時, 會調用System::identityHashCode來做比較;
do {
if ((tab[index] = hd) != null)
HashMap.TreeNode::treeify的流程可以理解為遍歷鏈表數據並插入紅黑樹, 所以HashMap.TreeNode::treeify的實現和紅黑樹的插入核心基本一致, 這裡就不做重複敘述了;
推薦閱讀: