1、查詢
(1)通過hash求餘找到相應的桶,如果桶的節點是是鍊錶節點則(2),如果是紅黑樹節點則(3)
(2)遍歷鍊錶比較hash,和通過equals比較,找到相等的
(3)紅黑樹的查詢,和二分搜尋樹沒什麼差別,也是通過key的hash和equals找到相等的
2、插入
(1)當桶陣列 table 為空時,通過擴容的方式初始化 table
(2)如果桶中沒有任何節點,則新插入節點直接插入到這個桶中
(3)如果該桶的節點是鍊錶節點型別,則將鍵值對插入鍊錶中,並根據鍊錶長度決定是否將鍊錶轉為紅黑樹
(4)如果該桶的節點是樹節點,則將鍵值對插入紅黑樹中。
(5)判斷鍵值對數量是否大於閾值,大於的話則進行擴容操作
3、擴容
(1)計算新桶陣列的容量 newcap 和新閾值 newthr
(2)根據計算出的 newcap 建立新的桶陣列,桶陣列 table 也是在這裡進行初始化的
(3)將鍵值對節點重新對映到新的桶陣列裡。如果節點是 treenode 型別,則需要拆分紅黑樹。如果是普通節點,則節點按原順序進行分組。其中,拆分紅黑樹時,因為樹節點還是保持了鍊錶引用的,所以和拆分鍊錶差不多,拆成兩組鍊錶,然後再判斷拆分後的鍊錶是否要轉換成紅黑樹。
4、刪除
(1)定位桶位置
(2)如果是鍊錶則遍歷鍊錶並找到鍵值相等的節點,然後刪除
(3)如果是紅黑樹則使用紅黑樹方式刪除節點
具體細節請看
文字描邊 如何在網頁裡實現文字描邊效果
文字描邊 想要在網頁裡實現文字描邊效果,在以前只能使用photoshop等來實現,但現在只需要乙個text stroke屬性,即可輕鬆做到文字描邊,漸變文字描邊,甚至文字描邊。01 語法text stroke text stroke是乙個復合屬性,由text stroke width和text st...
Flex 文字描邊濾鏡詳解(GlowFilter)
其實flex中的文字是沒有直接的描邊樣式的,不過我們可以使用glowfilter濾鏡的發光效果來實現。glowfilter color uint 0xff0000,alpha number 1.0,blurx number 6.0,blury number 6.0,strength number 2...
HashMap1 8原始碼分析
1 hashmap的原理,內部資料結構如何?底層使用雜湊表 陣列 鍊錶 當鍊表過長 其實是大於8 的時候會將鍊錶轉換成紅黑樹,以實現n log n 的查詢。2 具體過程 對 key 求 hash 值,然後再計算 下標。如果沒有碰撞,直接放入桶中,如果碰撞了,以鍊錶的方式鏈結到後面,如果鍊錶長度超過閥...