**1、**hashmap的工作原理? (如何雜湊 put)
hashmap基於hashing原理,通過put()和get()方法儲存和獲取物件。當將鍵值對傳遞給put()方法時,它呼叫鍵物件的hashcode()方法來計算hashcode,讓後找到bucket位置來儲存值物件。當獲取物件時,通過鍵物件的equals()方法找到正確的鍵值對,然後返回值物件。hashmap使用鍊錶來解決碰撞問題,當發生碰撞了,物件將會儲存在鍊錶的下乙個節點中。 hashmap在每個鍊錶節點中儲存鍵值對物件。
當兩個不同的鍵物件的hashcode相同時會發生什麼? 它們會儲存在同乙個bucket位置的鍊錶中。鍵物件的equals()方法用來找到鍵值對。
put:
1) 先檢查當前所有鍵值對中是否存在該鍵,鍵相等,值替換。
2) 檢查是否是key=null
3) 呼叫鍵物件的hashcode()方法來計算hashcode,通過鍵物件的equals()方法比較
4) 若有效個數/陣列長度》=0.75(擴容因子)
5) 需要擴容,2倍擴容
6) 重新雜湊,new陣列
重新雜湊
2、解決雜湊衝突的方法
1)線性探測法:
給陣列根據餘數找對應的下標,放值,若改下標已經有值,繼續尋找下乙個空位,若陣列已滿,對陣列進行2倍擴容(參考0.75)
2)鏈位址法:
不帶頭節點的單鏈表,採用頭插,當乙個位址後面鏈的值太多,如節點》8時,便採用二叉樹形式
HashMap工作原理
以前使用過很多次hashmap,但是對於其是如何實現的卻不是很了解,最近看了看hashmap的原始碼加上自己的理解寫了這篇文章方便以後回憶,寫得不好的地方請提醒。hashmap繼承了abstractmap類並且實現了map cloneable serializable三個介面。ps 並不是每乙個集合...
HashMap的工作原理
hashmap的工作原理 hashmap基於hashing原理,我們通過put 和get 方法儲存和獲取物件。當我們將鍵值對傳遞給put 方法時,它呼叫鍵物件的hashcode 方法來計算hashcode值,然後找到bucket位置來儲存值物件。當獲取物件時,通過鍵物件的equals 方法找到正確的...
HashMap的工作原理
hashmap的工作原理是近年來常見的j a面試題。幾乎每個j a程式設計師都知道hashmap,都知道 要用hashmap,知道hashtable和hashmap之間的區別,那麼為何這道面試題如此特殊呢?是因為這道題考察的深度很深。這題經常出現在高階或中高階面試中。投資銀行更喜歡問這個問題,甚至會...