星海

集合 · 单选题 · 第 9 题

Java 后端开发面试 · 第 9 题

HashMap 什么时候扩容,扩容后容量变为多少?

  1. A元素个数超过「容量 × 负载因子」时扩容,容量变为原来的 1.5 倍
  2. B每次插入元素前都会检查,并把容量扩到大于当前容量的下一个素数
  3. C元素个数超过「容量 × 负载因子」时扩容,容量变为原来的 2 倍
  4. DHashMap 的容量在创建时就固定下来,之后永远不会进行扩容操作

答案

C C. 元素个数超过「容量 × 负载因子」时扩容,容量变为原来的 2 倍

解析

默认初始容量 16、负载因子 0.75,元素超过 12 个就扩容为 32。容量保持 2 的幂,下标可以用 (n - 1) & hash 代替取模;扩容时每个元素要么留在原位,要么移到「原位 + 旧容量」。1.5 倍是 ArrayList 的扩容规则。

在线刷这套题:即时判分、错题本、闪卡复习,不用登录就能练。