HashMap 红黑树化原理
面试必问 HashMap,但你真的理解它的进化机制吗?从数组 + 链表到红黑树,JDK 8 的这次升级解决了什么问题? 一、HashMap 的数据结构演进 1.1 JDK 7:数组 + 单向链表 1.2 JDK 8:数组 + 链表 + 红黑树 1.3 为什么需要红黑树——哈希碰撞攻击 二、put() 方法源码全解析 2.1 hash() 扰动函数——为什么是 (h ^ h>>>16) 2.2 定位桶位置——(n-1) & hash 2.3 链表插入——尾插法(JDK 8)vs 头插法(JDK 7) 2.4 树化条件——链表长度 ≥ 8 且桶数量 ≥ 64 ...