集合 · 单选题 · 第 8 题
Java 后端开发面试 · 第 8 题
JDK 8 及以后的 HashMap,某个桶里的链表在什么条件下会转换成红黑树?
- A该桶链表长度达到 8,并且数组容量不小于 64
- B该桶链表长度达到 8 时,不论容量多大都立即转换
- C整个 HashMap 的元素总数超过 64 个时统一转换
- D实际负载超过 0.75 的负载因子时把所有桶都转换
答案
A A. 该桶链表长度达到 8,并且数组容量不小于 64
解析
TREEIFY_THRESHOLD 为 8,MIN_TREEIFY_CAPACITY 为 64。容量小于 64 时,链表过长优先选择扩容来分散元素,而不是树化。红黑树节点数降到 6 及以下时会退化回链表,8 和 6 之间留出缓冲,避免频繁来回转换。准确地说,是桶里已有 8 个节点、再插入新节点(长度超过 8)时触发树化。