hashmap是基於雜湊表的map介面的集合,允許使用null值和null鍵,底層是陣列+鍊錶的資料結構,陣列是hashmap的主體,鍊錶是為了解決雜湊衝突而存在的。當鍊表長度大於閾值(8)時,鍊錶轉換為紅黑樹,這樣就減少了查詢時間。
儲存put:
呼叫雜湊函式計算出key對應的雜湊值;根據雜湊值得到key在陣列中的位置(下標);如果該位置上已經有元素了,根據equals方法,若相等則替換,不等則將其存放在鍊錶中,新加入的元素放在鏈頭,最先加入的放在鏈尾;如果該位置上沒有元素,則將key放在該位置上。
陣列長度為2的次冪:
當陣列長度為2的次冪時,不同的key得到的雜湊值對應陣列相同的位置概率較小,資料均勻的分布在陣列中,碰撞的機率較小,查詢時不用遍歷某個位置上的鍊錶,提高了查詢效率。
HashMap底層原理
1.hashmap概述 hashmap是基於雜湊表的map介面的非同步實現。此實現提供所有可選的對映操作,並允許使用null值和null鍵。此類不保證對映的順序,特別是它不保證該順序恆久不變。2.hashmap的資料結構 注意,迭代器的快速失敗行為不能得到保證,一般來說,存在非同步的併發修改時,不可...
HashMap底層原理
hashmap實現map介面,非執行緒安全的,區別於concurrenthashmap。允許使用null值和null鍵,不保證對映的順序.底層資料結構是乙個 陣列 鍊錶 紅黑樹 put 根據key計算得到key.hash h k.hashcode h 16 根據key.hash計算得到桶陣列的索引i...
HashMap底層原理
預設負載因子 static final float default load factor 0.75f 無參構造 public hashmap 有參構造 public hashmap int initialcapacity public hashmap int initialcapacity,flo...