HoRain云--Java 集合源码剖析:HashMap 从 put 到扩容的完整流程 1. 数据结构JDK 8 后HashMap 使用数组 链表 红黑树。2. hash 扰动static final int hash(Object key) { int h; return (key null) ? 0 : (h key.hashCode()) ^ (h 16); }让高位参与运算减少哈希冲突。3. put 流程计算 hash。定位数组下标。如果桶为空直接插入。如果冲突遍历链表或红黑树。链表长度达到 8 且容量达到 64转为红黑树。4. 扩容默认容量 16负载因子 0.75。扩容时容量翻倍重新分配节点。5. 线程安全HashMap 线程不安全多线程扩容可能导致数据丢失或死循环。并发场景使用ConcurrentHashMap。