TreeMap中的put方法詳解

2021-09-25 04:45:00 字數 1240 閱讀 6962

public v put(k key, v value)

int cmp; //cmp表示key排序的返回結果

entryparent; //父節點

// split comparator and comparable paths

comparator<? super k> cpr = comparator; //指定的排序演算法

//如果cpr不為空,則採用既定的排序演算法進行建立treemap集合

if (cpr != null) while (t != null);

}//如果cpr為空,則採用預設的排序演算法進行建立treemap集合

else while (t != null);

}//將新增節點當做parent的子節點

entrye = new entry<>(key, value, parent);

//如果新增節點的key小於parent的key,則當做左子節點

if (cmp < 0)

parent.left = e;

//如果新增節點的key大於parent的key,則當做右子節點

else

parent.right = e;

/* 上面已經完成了排序二叉樹的的構建,將新增節點插入該樹中的合適位置

* 下面fixafterinsertion()方法就是對這棵樹進行調整、平衡,具體過程參考上面的五種情況

*/fixafterinsertion(e);

//treemap元素數量 + 1

size++;

//treemap容器修改次數 + 1

modcount++;

return null;

}在treemap中儲存資料的時候,首先是判斷根節點是否為空,也就是我們上課看的**中entryt = root;if (t == null) 這兩句話,如果根節點為空,我們就可以直接往根節點中儲存資料,並將這個資料作為樹的根節點,也就是**中的root = new entry<>(key, value, null);這裡面的null說明此時的根節點還是指向空。在根節點的儲存過程中注意根節點的第乙個儲存資料不能儲存成為null,這樣會報錯( throw new nullpointerexception();因為在對null進行強轉的時候會出現空指標

接下來的儲存就是比較儲存,如果將要儲存的值比當前節點的值要小,就儲存為dang前值的左節點,如果大於當前節點的值的話就儲存為右節點,本處要注意,這裡是一直沿著樹的枝椏比較,知道有位置可放的情況下才會新建乙個書的枝椏。

hashma的put 方法總結

hashmap put 方法流程圖 hashmap的put方法流程總結 1 put key,value 中直接呼叫了內部的putval方法,並且先對key進行了hash操作 2 putval方法中,先檢查hashmap資料結構中的索引陣列表是否位空,如果是的話則進行一次resize操作 3 以has...

HashMap的Put方法(二)

hashmap類中有如下put方法 方法體省略 public v put k key,v value final v putval int hash,k key,v value,boolean onlyifabsent,boolean evict public void putall map ext...

JS中的call apply bind方法詳解

1.方法定義 call方法 語法 call thisobj arg1 arg2 argn 定義 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。說明 call 方法可以用來代替另乙個物件呼叫乙個方法。call 方法可將乙個函式的物件上下文從初始的上下文改變為由 thisobj 指定的新物件。如果沒...