HashMap實現原理

2021-07-15 16:38:50 字數 468 閱讀 2478

hashmap 的get 方法:

//呼叫get方法返回entry

public v get(object key)

//getentry方法

final entrygetentry(object key)

//對key

int hash = (key == null) ? 0 : hash(key);

for (entrye = table[indexfor(hash, table.length)];

e != null;

e = e.next)

return null;}

/**

檢索物件進行雜湊編碼,並將另外乙個雜湊函式應用於結果的雜湊碼,以防質量差的雜湊函式。

這是關鍵,因為hashmap採用雙重雜湊表,否則,遇到不同的雜湊碼不碰撞在較小的object k。

注:空鍵總是對映到雜湊0,因此索引0

HashMap實現原理

資料結構中有陣列和鍊錶來實現對資料的儲存,但這兩者基本上是兩個極端。陣列儲存區間是連續的,占用記憶體嚴重,故空間複雜的很大。但陣列的二分查詢時間複雜度小,為o 1 陣列的特點是 定址容易,插入和刪除困難 鍊錶儲存區間離散,占用記憶體比較寬鬆,故空間複雜度很小,但時間複雜度很大,達o n 鍊錶的特點是...

HashMap實現原理

public v put k key,v value 如果i索引處的entry為null,表明此處還沒有entry。modcount 將key value新增到i索引處。addentry hash,key,value,i return null 從上面的源 中可以看出 當我們往hashmap中put...

HashMap實現原理

hashmap底層是通過陣列加鍊表的方式實現的,首先假如定義乙個陣列長度為5,當新增元素時,根據key的hashcode值 5進行取餘,如果餘值為3,則放在陣列的第四個位置,如果第四個位置已經有值,則會發生hash碰撞問題,所以hashmap又採用了鍊錶的方式進行儲存,如果key值存在則覆蓋,如果不...