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...