前提知識:
常見資料結構
(暫未發布)j**a.lang.object的hashcode與equals函式
hashmap的資料結構--基於hash表實現
原始碼分析: 補充:(暫未發布)transient瞬態非序列化關鍵字詳情
publicclass hashmap
public final boolean equals(object o)
return false;}}
} 存值put實現:
public
v put(k key, v value)
final v putval(int hash, k key, v value, boolean onlyifabsent,boolean
evict)
if (e.hash == hash &&((k = e.key) == key || (key != null &&key.equals(k))))
break
; p =e;}}
if (e != null)
}++modcount;
if (++size >threshold)
resize();
afternodeinsertion(evict);
return
null
; }
concurrenthashmap原始碼片段分析:
通過利用存值put時利用synchronize同步**塊解決多執行緒存值的執行緒安全問題
publicv put(k key, v value)
/**implementation for put and putifabsent
*/final v putval(k key, v value, boolean
onlyifabsent)
else
if ((fh = f.hash) ==moved)
tab =helptransfer(tab, f);
else
node
pred =e;
if ((e = e.next) == null
) }
}else
if (f instanceof
treebin) }}
}if (bincount != 0) }}
addcount(1l, bincount);
return
null
; }
HashMap原始碼分析
public hashmap int initialcapacity,float loadfactor 2 接下來是重要的put方法,put方法用於將鍵值對儲存到map中,讓我們來具體分析一下。public v put k key,v value if key null 若key為null,則將va...
HashMap 原始碼分析
1 getentry object key 方法 final entrygetentry object key return null 根據key的hash值計算出索引,得到table中的位置,然後遍歷table處的鍊錶 for entrye table indexfor hash,table.le...
HashMap原始碼分析
public v put k key,v value if key null return putfornullkey value int hash hash key int i indexfor hash,table.length for entrye table i e null e e.nex...