DEV Community

ym z
ym z

Posted on

Java面试HashMap必考题:5分钟速通

HashMap底层结构

数组 + 链表 + 红黑树
默认容量16,负载因子0.75
链表>8且数组≥64 → 转红黑树
Enter fullscreen mode Exit fullscreen mode

put流程

  1. 计算hash:key.hashCode() ^ (h >>> 16)(高低位混合)
  2. 定位桶:(n-1) & hash(取模优化)
  3. 桶空→直接放;有值→尾插;>8→红黑树
  4. size > threshold → resize()扩容

面试被追问

"为什么用红黑树不用AVL?"

红黑树插入旋转少,HashMap高频写场景更优。

"1.7和1.8区别?"

1.7 1.8
头插法 尾插法
数组+链表 +红黑树
扩容rehash 高位运算
死循环 安全

👉 更多面试题:https://Abyte-zym.github.io/arsenal

Top comments (0)