final v putval(int hash, k key, v value, boolean onlyifabsent,
boolean evict)
// 該節點不為鍊錶最後乙個節點,判斷值是否相同,相同直接退出迴圈,因為此時e指向
// p.next 即p.next是相同節點,需要替換
if (e.hash == hash &&
((k = e.key) == key || (key != null && key.equals(k))))
break;
// 上述兩種情況都不滿足的情況下,p指向e,繼續迴圈
p = e;}}
// e不為空的情況下,說明存在相同元素 需要替換,並將替換前的節點值返回
v oldvalue = e.value;
if (!onlyifabsent || oldvalue == null)
e.value = value;
afternodeaccess(e);
return oldvalue;}}
// 操作次數+1 (modcount是用來記錄對hashmap變更的次數,用於多執行緒情況下對hashmap操作異常標
// 識符)
++modcount;
// threshold = capital*loadfactor 也就是hashmap擴容值 如果當前陣列擴大1超過該值,則進行
// 擴容操作
if (++size > threshold)
resize();
// 該方法在hashmap中是個空方法(實際是給linkedhashmap使用,因此忽略即可)
afternodeinsertion(evict);
return null;
}
參考文章: jdk1 8常用總結
1.查詢集合裡的第乙個物件 filter 例 查詢listlist 中username為小明的物件t list.stream filter findfirst 1 list.stream filter e 小明 equals e.getusername findfirst 2.查詢滿足條件的物件,並...
用jdk1 8還是用jdk11
2020年年初,公司cto要求我們採用最新版本jdk,甚至直接使用最新版kotlin。前兩天 2020年12月 我把公司 公升級到了jdk11 lts版本,但不是最新版jdk。如果不搞rocketmq,不會發現什麼問題,而且會感覺這是乙個很好的改進,編碼寫法改進了,甚至效能提高了 然後,一搞rock...
Java 方法引用(JDK1 8)
引用 物件引用,物件引用的本質在於為乙個物件起別名,即 不同的棧記憶體可以同時指向同一塊堆記憶體空間。與物件引用類似的情況是,方法引用,即 為方法設定別名。在jdk 1.8之中針對於方法引用提供有如下的四種形式 引用靜態方法 類名稱 static方法名稱 引用某個物件的方法 例項化物件 普通方法 引...