Java 集合:HashMap 数组+链表+红黑树

一、HashMap 结构

JDK 8 中 HashMap = 数组 + 链表 + 红黑树。key 经 hash 扰动后定位桶;桶内链表长度 > 8 且数组容量 ≥ 64 时转红黑树,< 6 退化为链表。

二、核心参数

参数 默认 说明
初始容量 16 总是 2 的幂
负载因子 0.75 容量×因子=扩容阈值
树化阈值 8 链表转红黑树

三、使用示例

Map<String, Integer> m = new HashMap<>();
m.put("a", 1); m.get("a"); m.containsKey("a");
for (Map.Entry<String,Integer> e : m.entrySet()) { }

要点:key 要正确实现 hashCode 和 equals;多线程用 ConcurrentHashMap,别在并发下用 HashMap(可能死循环/数据损坏)。