面試題 HashMap如何get乙個元素

2021-10-13 13:11:19 字數 490 閱讀 8733

這一題問的是如何獲取hashmap內儲存的元素,考察的是hashmap底層原理的掌握。首先要知道,hashmap是如何儲存元素的,之後才能夠知道如何獲取乙個元素。

想要在hashmap中獲取get乙個元素,需要傳入乙個key。

hashmap會計算這個key的雜湊值,並對hashmap的容量進行求餘,得到以陣列的方式儲存的資料中,key所對應的位置。

獲取到hashmap中key所對應的位置之後,判斷那個位置儲存的的鍵的雜湊值和鍵是否等於傳入的key,若相等即找到了想要的元素。

若不相等,表示發生了雜湊衝突。需要進一步判斷對應位置的物件型別是否為treenode,若不是,則表示當前位置儲存的是鍊錶,否則,表示當前位置儲存的是紅黑樹。

若儲存的是鍊錶,則從鏈頭開始遍歷,直到發現鍊錶中的乙個的節點上儲存的key等於傳入的key。

若儲存的是紅黑樹,則從樹中查詢節點的key等於傳入的key。若查詢成功,返回節點儲存到值,即為查詢結果。

若查詢失敗,返回null。

面試題 HashMap詳解

先上hashcode和equals原始碼 jni,呼叫底層其它語言實現 public native inthashcode 預設同 直接比較物件 public boolean equals object obj equals方法 string類中重寫了equals方法,比較的是字串值,看一下原始碼實...

HashMap常見面試題

1.你知道hashmap的工作原理嗎?你知道hashmap的get 方法的工作原理嗎?hashmap基於hashing原理,我們通過put 和get 方法儲存和獲取物件。當我們將鍵值對傳遞給put 方法時,它呼叫鍵物件的hashcode 方法來計算hashcode,讓後找到bucket位置來儲存en...

HashMap常見的面試題

1.hashmap底層是如何實現的?首先底層資料結構是由陣列 鍊錶組成鍊錶雜湊。hashmap先得到key的雜湊值,在通過擾動函式 減少碰撞次數 得到hash值,接著通過hash n 1 n位table的長度,運算後得到陣列的索引值。如果當前節點存在元素,則通過比較hash值和key值是否相等,相等...