深深的碼丨Java HashMap 透析
Hashmap 的資料結構基礎是基於一維陣列實現的,向其新增元素時通過計算key的hash值來確定具體儲存位置。新增元素過程中若出現hash衝突,也就是N個元素key的hash值相等,處理方式為:將元素轉為連結串列結構儲存,若連結串列節點數超過閾值8(TREEIFY_THRESHOLD = 8;
),會將連結串列結構轉為紅黑樹,此轉化過程史稱 Hashmap 樹化
本文將對 HashMap 的構造HashMap()
、資料儲存put()
、擴容resize()
、樹化等過程中所涉及 JDK 原始碼做行級解釋。若有異議或建議歡迎您在文末留言討論,本小弟先做拋磚引玉!
HashMap 構造方法
HashMap 共提供了 4 種 構造方法,滿足各種常見場景下對容量的需求
// 第1種:建立一個 HashMap 並指定 容量(initialCapacity) 和裝載因子(loadFactor)
public HashMap(int initialCapacity, float loadFactor) {
// 指定容量不可小於0,但可設定為 0 。之後通過put()新增元素時,會resize()
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal initial capacity: " +
initialCapacity);
// 如果指定的容量超過了最大值,則自動置為最大值,也就是 1 << 30(也就是2的30次方)
if (initialCapacity > MAXIMUM_CAPACITY)
initialCapacity = MAXIMUM_CAPACITY;
// 裝載因子不可小於等
相關文章
- Java——HashMap原始碼解析JavaHashMap原始碼
- Java:HashMap原始碼分析JavaHashMap原始碼
- 搞懂 Java HashMap 原始碼JavaHashMap原始碼
- Java集合:HashMap原始碼剖析JavaHashMap原始碼
- Java集合框架之 Java HashMap 原始碼解析Java框架HashMap原始碼
- HashMap原始碼解析(java1.8.0)HashMap原始碼Java
- java併發之hashmap原始碼JavaHashMap原始碼
- java 8 HashMap 原始碼閱讀JavaHashMap原始碼
- java基礎:HashMap — 原始碼分析JavaHashMap原始碼
- java集合原始碼分析(六):HashMapJava原始碼HashMap
- Java基礎——HashMap原始碼分析JavaHashMap原始碼
- 手寫 Java HashMap 核心原始碼JavaHashMap原始碼
- Java集合之HashMap原始碼解析JavaHashMap原始碼
- Java HashMap 核心原始碼解讀JavaHashMap原始碼
- Java HashMap例項原始碼分析JavaHashMap原始碼
- 【Java集合原始碼剖析】HashMap原始碼剖析Java原始碼HashMap
- Java集合(6)之 HashMap 原始碼解析JavaHashMap原始碼
- Java集合原始碼學習(5)HashMapJava原始碼HashMap
- Java類集框架 —— HashMap原始碼分析Java框架HashMap原始碼
- java中hashMap的排序JavaHashMap排序
- Java HashMap的工作原理JavaHashMap
- Java java.util.HashMap實現原理原始碼分析JavaHashMap原始碼
- 我已經深深的愛上了GoogleGo
- 死磕 java集合之HashMap原始碼分析JavaHashMap原始碼
- Java 進階必備:HashMap 原始碼分析JavaHashMap原始碼
- Java HashMap和Go map原始碼對比JavaHashMapGo原始碼
- Java HashMap 原始碼逐行解析(JDK1.8)JavaHashMap原始碼JDK
- Java集合框架原始碼剖析:HashSet 和 HashMapJava框架原始碼HashMap
- Java 集合框架 HashSet 和 HashMap 原始碼剖析Java框架HashMap原始碼
- Java-HashMap中put原始碼解讀JavaHashMap原始碼
- Java集合:HashMapJavaHashMap
- Java1.7的HashMap原始碼分析-面試必備技能JavaHashMap原始碼面試
- 從程式碼層讀懂 Java HashMap 的實現原理JavaHashMap
- 淺談Java中的HashmapJavaHashMap
- java基礎型別原始碼解析之HashMapJava型別原始碼HashMap
- [java]HashMap原理剖析JavaHashMap
- Java集合之HashMapJavaHashMap
- java面試題-HashMap的工作原理Java面試題HashMap