Maps.newHashMapWithExpectedSize
Maps.newHashMapWithExpectedSize
Maps.newHashMapWithExpectedSize 是 Guava 库中的一个静态方法
用于创建一个具有预期大小的 HashMap。它通过合理地预估所需的容量,减少 HashMap 在扩容时的开销,从而提升性能。
方法签名
1 | public static <K, V> HashMap<K, V> newHashMapWithExpectedSize(int expectedSize) |
参数
expectedSize:预期HashMap的大小,也就是你打算存入的键值对数量。此方法会根据这个值来计算合适的初始容量,以尽量减少扩容操作。
关键点:是预期键值对的大小,不是预期容器大小!,实际容量是 expectedSzie ÷ (3/4) 向 2^n 向上取值
返回值
- 返回一个初始化好的
HashMap<K, V>对象,其容量已经根据传入的expectedSize进行了优化。
重要说明:
- 容量与负载因子:
HashMap默认的负载因子是 0.75,也就是说,当 HashMap 的元素数量达到容量的 75% 时,HashMap 就会进行扩容。newHashMapWithExpectedSize会根据传入的预期大小expectedSize和默认负载因子,推算出适当的初始容量,以避免频繁扩容。 - 性能优化:如果你知道 HashMap 大概需要存储多少元素,使用这个方法可以减少
HashMap的内部重分配操作,进而提升性能。 - 实际容量:由于
HashMap的容量必须是 2 的幂次方,实际分配的容量大概率会大于传入的expectedSize。
示例代码
1 | import com.google.common.collect.Maps; |
使用场景
- 当你清楚
HashMap中大致的键值对数量时,可以使用此方法来优化性能。特别是在构建大规模HashMap或需要频繁进行增删操作的场景下,能够有效减少不必要的扩容开销。
注意事项
- 如果实际存储的元素数量大大超过
expectedSize,HashMap依然会进行扩容。此方法并不限制最大存储容量,只是帮助优化初始容量。
总结
Maps.newHashMapWithExpectedSize 是一个非常实用的方法,当你可以预估 HashMap 大小时,能够减少内存开销和提升性能,是构建高效 Java 应用的一个有力工具。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CautionX!
