hashmap 的put與get 筆記

2021-10-07 01:53:56 字數 571 閱讀 4233

put操作

成員變數:

transient entry table = (entry) empty_table;//陣列

1 資料介面就是陣列 加鍊表  hashmap有 table陣列專門記錄 的就是,正常的put值就是計算出key的hashcode然後找出索引 i 去table陣列中找,如果存在就用單鏈表儲存,如果不存在的話就直接addentry把資料儲存,然後如果找不到

get操作:

進行get操作的時候首先也是計算出k的hashcode 然後計算出索引i 去table[i]中遍歷單鏈表,此操作比較慢,如果資料量過大的時候,最後預先給map乙個長度,避免進行自動擴容引起的時間消耗,重新計算hash複製資料是非常耗時間的, 然後根據key的hash值 以及key值本身作為條件進行查詢, table陣列中每乙個單鏈表的hash應該是相等的,只是key不一樣 

HashMap原始碼之get與put方法

hashmap是基於陣列和鍊錶來儲存鍵值對物件的,我們簡單看下get和put方法的原始碼。1 我們呼叫put方法來儲存鍵值對時,它先呼叫hash方法來計算hashcode,然後用hashcode和entry陣列的大小來做按位與操作,求出所在的entry陣列的下標位置。通過key與下標所在的entry...

HashMap的put和get的底層實現原理

hashmap的put和get的底層實現原理 在了解hashmap的底層實現原理的時候,我們首先了解hashmap的底層結構。hashmap的底層是基於陣列 鍊錶實現的。但是jdk1.7和jdk1.8的實現有點不同。hashmap的儲存結構 hashmap的底層是基於陣列 鍊錶實現的。但是jdk1....

HashMap的Put方法(二)

hashmap類中有如下put方法 方法體省略 public v put k key,v value final v putval int hash,k key,v value,boolean onlyifabsent,boolean evict public void putall map ext...