集合 · 单选题 · 第 9 题
Java 后端开发面试 · 第 9 题
HashMap 什么时候扩容,扩容后容量变为多少?
- A元素个数超过「容量 × 负载因子」时扩容,容量变为原来的 1.5 倍
- B每次插入元素前都会检查,并把容量扩到大于当前容量的下一个素数
- C元素个数超过「容量 × 负载因子」时扩容,容量变为原来的 2 倍
- DHashMap 的容量在创建时就固定下来,之后永远不会进行扩容操作
答案
C C. 元素个数超过「容量 × 负载因子」时扩容,容量变为原来的 2 倍
解析
默认初始容量 16、负载因子 0.75,元素超过 12 个就扩容为 32。容量保持 2 的幂,下标可以用 (n - 1) & hash 代替取模;扩容时每个元素要么留在原位,要么移到「原位 + 旧容量」。1.5 倍是 ArrayList 的扩容规则。