HashMap变成红黑树会退化吗 Published on Apr 16, 2026 in 随笔 with 0 comment 会退化。 在 Java 的 HashMap 中,红黑树在满足特定条件时会退化为链表。主要有以下两种情况: 1. 扩容时(最常见) 当 HashMap 进行 resize() 扩容时,原有红黑树中的节点会被重新分配到新的桶位(低位桶或高位桶)。 如果拆分后,某个桶位中的树节点数量 ≤ 6,这个桶位中的红黑树就会退化为链表。 阈值 6 和 树化阈值 8 之间有个差值(7),是为了避免频繁地在链表和树之间转换,防止性能抖动。 2. 删除元素时 当调用 remove() 方法删除红黑树中的节点后,HashMap 会检查当前树的节点数量: 如果节点数 < 6,同样会将红黑树转换为链表。 总结 退化阈值: 红黑树节点数 ≤ 6 树化阈值: 链表长度 ≥ 8 且数组长度 ≥ 64 这种设计是为了在查询效率(树结构 O(log n))和空间/维护成本(树节点占用内存更大,且需要维护红黑规则)之间取得平衡:当数据量很少时,链表的简单结构反而更划算。 本文由 admin 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。