【一线大厂Java面试题合集】第08篇-HashMap源码深度剖析

第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(红黑树) (树化)