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 指定的新物件。如果沒...