源碼閱讀(22):Java中其它主要的Map結構——TreeMap容器(2)

(接上文《源碼閱讀(21):Java中其它主要的Map結構——TreeMap容器(1)》)
(注:筆者翻閱了一下網絡上的相關資料,基本上沒有發現把TreeMap容器的刪除操作講清楚的文章)

2.3、TreeMap添加操作

TreeMap同樣使用put方法進行新的K-V鍵值對對象的添加操作,其工作過程完全參照之前已經介紹過的紅黑樹添加新結點的方式進行工作(可參考之前的一篇文章《源碼閱讀(17):紅黑樹在Java中的實現和應用》),簡單來TreeMap容器添加新的結點有兩個關鍵步驟:

  1. 通過堆樹的方式找到適合的結點,將新的結點添加成前者的左葉子結點或者右葉子節點。
  2. 由於以上的添加操作,紅黑樹可能會失去平衡性,於是就需要進行操作讓紅黑樹重新平衡。

清楚了以上兩個關鍵步驟,我們可以詳細閱讀put方法的源代碼了:

// 實際上整個put方法中的代碼都在處理第一個步驟;
// put方法中調用的fixAfterInsertion方法,是在處理第二個步驟
public V put(K key, V value) 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章