這一題問的是如何獲取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值是否相等,相等...