看了一上午,原始碼看的頭疼,果斷放棄,放個鏈結吧
jdk1.8原始碼解析:
只記錄下理解的幾個知識點:
1.實現介面 map,
2.hashmap是陣列+鍊錶的形式實現的,使用hash來計算在陣列的索引位置,再在鍊錶中使用equals來判斷位置。
3.key和value都可以為null
4.和hashtable比,執行緒不安全,對hashmap進行迭代的時候,hashmap的結構發生了變化(例如其他執行緒對hashmap 進行put操作),需要丟擲異常concurrentmodificationexception
5.對擴容設計的非常巧妙,hahsmap的容量必須是2的次方,
6.重寫物件equals()的時候,hashcode()也要重寫,反之亦然。
static final int hash(object key)
hashmap底層實現原理
每次初始化hashmap都會構造乙個table陣列,而table陣列的元素為entry節點。static class entryimplements map.entryhashmap也可以說是乙個陣列鍊錶,hashmap裡面有乙個非常重要的內部靜態類 entry,這個entry非常重要,它裡面包含了...
HashMap底層實現原理
hashmap map new hashmap 在例項化以後,底層建立了長度為16的一維陣列entry table 已經執行過put操作.map.put key1 value1 呼叫key1所在類的hashcode 計算key1雜湊值,此雜湊值經過某種演算法計算後,得到在entry陣列中的存放位置 ...
HashMap底層實現原理
一 jdk1.7中hashmap的底層實現原理 首先,當我們通過hashmap的構造方法建立乙個hashmap物件時,底層就會建立乙個entry型別的一維陣列 預設初始化長度為16 當我們執行put操作的時候,會呼叫key所屬類的hashcode方法計算出key的hash值,然後將hash值通過雜湊...