1 8 HashMap文字描述(複習)

2021-09-08 16:34:14 字數 730 閱讀 8976

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 值,然後再計算 下標。如果沒有碰撞,直接放入桶中,如果碰撞了,以鍊錶的方式鏈結到後面,如果鍊錶長度超過閥...