HashMap底层结构
数组 + 链表 + 红黑树
默认容量16,负载因子0.75
链表>8且数组≥64 → 转红黑树
put流程
- 计算hash:
key.hashCode() ^ (h >>> 16)(高低位混合) - 定位桶:
(n-1) & hash(取模优化) - 桶空→直接放;有值→尾插;>8→红黑树
- size > threshold → resize()扩容
面试被追问
"为什么用红黑树不用AVL?"
红黑树插入旋转少,HashMap高频写场景更优。
"1.7和1.8区别?"
| 1.7 | 1.8 |
|---|---|
| 头插法 | 尾插法 |
| 数组+链表 | +红黑树 |
| 扩容rehash | 高位运算 |
| 死循环 | 安全 |
Top comments (0)