HashMap的底層怎麼玩的

2022-03-18 16:47:12 字數 368 閱讀 5175

jdk1.8之前  簡單來說 陣列+鍊錶              鍊錶雜湊

根據雜湊確定資料存到陣列的位置  然後鍊錶是為了解決雜湊衝突

預設的陣列長度是16   載入因子是0.75  也就是說存第13個值的時候  陣列會擴容至當前的2倍

翻倍是使雜湊衝突降低  存在必合理

關於 自定義物件重寫hashcode  和equals 方法

如果只寫後者

結果會不理

在jdk1.8之後   加入了紅黑樹     當鍊表長度大於8  且這個陣列長度大於64  就會生成紅黑樹

hash值=(hashcode)^(hashcode >>> 16)

陣列下標:hash&(16-1) = hash%16

HashMap的底層原理

簡單來說,hashmap的實現是 陣列 鍊錶 陣列是hashmap的主體,鍊錶則是主要為了解決雜湊衝突而設立的。對於查詢來說,陣列更加的方便 對於刪除,修改,鍊錶更加的方便。hash表的本質就是乙個陣列,陣列中的每乙個元素被稱為乙個箱子 bin 箱子中存放的是鍵值對。儲存過程如下 根據k值計算他的雜...

HashMap的底層原理

在jdk1.6和jdk1.7中hashmap是桶加鍊表的實現方式.hashmap的底層結構就是乙個陣列,陣列中每乙個元素又是乙個鍊錶.當新增乙個元素 key value 的時候,根據key的hash值 或者說呼叫key的hashcode方法 來確定插入到哪乙個桶中 確定插入陣列中的位置 當桶中有多個...

HashMap的底層原理

一 在jdk7中 1.hashmap map new hashmap 在例項化以後,底層建立了長度是16的一維陣列 entrytable 2.map.put key1,value1 情況1 首先,呼叫key1所在類的hashcode 計算key1的雜湊值,此雜湊值經過某種演算法以後,得到在entry...