MST

星途 面试题库

面试题:Java中HashMap在大数据量下如何优化初始容量

假设已知大数据量场景下,预估会有10000个元素存储到HashMap中,如何设置合理的初始容量以减少扩容带来的性能损耗,并说明原因。
13.9万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 设置初始容量
    • 可以设置初始容量为16384。
  2. 原因
    • 在Java的HashMap中,其容量必须是2的幂次方。当HashMap中的元素数量达到容量的负载因子(默认是0.75)时,就会进行扩容。
    • 我们预估有10000个元素,设初始容量为n,根据负载因子的计算规则,n * 0.75 >= 10000,即n >= 10000 / 0.75 ≈ 13333.33
    • 比13333.33大的最小的2的幂次方数是16384(因为2^14 = 16384)。这样设置初始容量,可以在元素数量达到10000时,尽量避免因为扩容而带来的重新计算哈希值、重新分配内存等性能损耗。在大数据量场景下,扩容操作往往代价较高,合理设置初始容量可以提升HashMap的性能。