第08篇:HashMap源码深度剖析(JDK 7 vs 8)
模块:Java集合框架 |难度:高级 |面试频率:★★★★★
1.HashMap 的数据结构是什么?JDK 8 为什么要引入红黑树?阈值为什么是 8?
核心概念
HashMap 是基于哈希表实现的键值对存储结构。在 JDK 7 中,HashMap 采用的是数组 + 链表的结构;而在 JDK 8 中,升级为数组 + 链表 + 红黑树的结构。
JDK 7: Entry[] table → 链表头插法 JDK 8: Node[] table → 链表尾插法 → 红黑树(链表长度 ≥ 8 且数组长度 ≥ 64)JDK 8 数据结构图解
table数组 [0] -> null [1] -> Node -> Node -> Node -> null (链表) [2] -> null [3] -> TreeNode(红黑树) (树化)