hashmap----資料結構:
// 初始容量
static
final
int de****t_initial_capacity =
1<<4;
// 最大容量
static
final
int maxinum_capacity =
1<<30;
// 擴容因子
static
final
float default_load_factor =
0.75
;// 當新增乙個元素被新增到有至少treeify_threshold 個節點的桶中,桶中鍊錶將被轉化為樹形結構
final
int treeify_threshold =
8// 樹轉鍊錶
final
int untreeify_threshold =6;
// 陣列長度 > 64 && 鍊錶節點 > 8 ,鍊錶才能轉紅黑樹
static
final
int min_treeify_capacity =
64;
hashmap----建構函式:
// 1
public
hashmap()
// 2
public
hashmap
(int initalcapacity)
// 3
public
hashmap
(map <
?extendsk,
?extends
v> m)
// 4
public
hashmap
(int initialcapacity,
float loadfactor)
static
final
inttablesizefor
(int cap)
hashmap----put:
// put
public v put
(k key,v value)
// putval onlyifabsent == false不改變現有值, evict == true 建立狀態
final v putval
(int hash,k key,v value,
boolean onlyifabsent,
boolean evict)
}// hash
static
final
inthash
(object key)
// putmapenties
final
void
putmapentries
(map<
?extendsk,
?extends
v> m,
boolean evict)
else
for(map.entry<
?extendsk,
?extends
v> e : m.
entryset())}}
HashMap原始碼學習筆記
hashmap的底層主要是基於陣列和鍊錶來實現的,它之所以有相當快的查詢速度主要是因為它是通過計算雜湊碼來決定儲存的位置。hashmap中主要是通過key的hashcode來計算hash值的,只要hashcode相同,計算出來的hash值就一樣。如果儲存的物件對多了,就有可能不同的物件所算出來的ha...
學習筆記HashMap原始碼學習
hashmap hashmapextends abstractmap implements map,cloneable,serializable 繼承abstractmap類,實現頂層介面map介面 int default initial capacity 1 4 預設容量為16 int maxim...
HashMap原始碼筆記
預設的初始化容量為16 static final int default initial capacity 1 4 最大的容量,容量的值必須是2的冪並且小於最大的容量,最大值為2的30次方 static final int maximum capacity 1 30 載入因子預設值為0.75 sta...