hashmap是用來存放key-value的容器,底層是使用陣列+(鍊錶/紅黑樹)實現的(節點少時(預設是untreeify_threshold = 6值)用鍊錶,多時(預設是》treeify_threshold = 8)用紅黑樹,),樹化容量為min_treeify_capacity,預設是64。
成員變數:
構造器:
內部類:hashmap內部類主要是用來定義鍊錶節點和樹節點,key的集合與value的集合,以及三種方式迭代器的定義。
ha****erator,keyiterator,valueiterator,entryiterator:普通迭代器的四個內部類,ha****erator為乙個抽象類,是另外三個類的父類。
hashmapspliterator,keyspliterator,valuespliterator,entryspliterator:並行遍歷迭代器(水平不夠分析不了)
方法:前文分析原始碼時所有重要的方法都已標出來了
resize()/putval():非常重要,雖然不能呼叫,但是和tablesizefor一樣;複習的時候好好體會,這是table擴容和放入節點的底層實現。
treeifybin(node, int):將鍊錶轉為紅黑樹(暫時跳過)。
clone()方法會淺表賦值乙份,並且返回的是object,還需要強轉。
總結插入操作(不考慮紅黑樹)/刪改查同理:
總結resize():
總結迭代器的實現:
從HashMap看紅黑樹
樹上的節點要麼是紅色,要麼是黑色 根節點是黑色 每個葉子節點都是黑色的 所有的葉子節點都是null節點 紅色節點的子節點都是黑色的 任意乙個節點到其子孫葉子節點的黑色節點的數量是相等的。下面是乙個紅黑樹的圖示 從任意節點 不含該節點 到達乙個葉節點的任意一條簡單路徑上的黑色節點個數稱為該節點的黑高 ...
紅黑樹總結
r b tree,全稱是red black tree,又稱為 紅黑樹 它一種特殊的二叉查詢樹。紅黑樹的每個節點上都有儲存位表示節點的顏色,可以是紅 red 或黑 black r b tree,全稱是red black tree,又稱為 紅黑樹 它一種特殊的二叉查詢樹。紅黑樹的每個節點上都有儲存位表示...
紅黑樹總結
關鍵特點 1 根是黑色 2 null是黑色 3 沒有相連的紅色 4 乙個節點到null所有路徑上所有黑色節點數量相等 最高高度2log n 1 最壞時間複雜度log n 插入 自底向上插入 需要用乙個棧儲存搜尋路徑經歷過的節點。1 按照二叉搜尋樹插入,新插入點為紅色。2 如果新插入節點的父親是黑色,...