gpt4 book ai didi

java - new HashMap(int) 和 guava Maps.newHashMapWithExpectedSize(int) 的区别

转载 作者:搜寻专家 更新时间:2023-10-30 21:29:49 30 4
gpt4 key购买 nike

在 Java 中,您可以创建一个新的 HashMap 来保存特定数量的项目,如下所示:

Map m = new HashMap(100);

Guava 提供了一个 Maps.newHashMapWithExpectedSize(int) 方法,我希望它可以简单地调用 HashMap(int)。但它并没有这样做,而是计算自己的容量并使用它。

为什么 newHashMapWithExpectedSize 做自己的事情,为什么我要使用它而不是直接调用 new HashMap(int)

最佳答案

你读过这个方法的Javadoc吗? ?

Creates a HashMap instance, with a high enough "initial capacity" that it should hold expectedSize elements without growth.

请注意,new HashMap(int) 构造函数的“初始大小”参数指定了存储条目的哈希表的初始大小,这基本上是一个实现您不必关心的细节。当哈希表超过映射的加载因子(默认为 0.75)时,它会调整大小,这意味着如果您指定初始容量为 16,然后向映射添加 16 个条目,哈希表将几乎肯定会调整大小。

使用 Guava 的方法,如果您将预期大小 指定为 16,然后添加 16 个条目,哈希表将不会调整大小。

关于java - new HashMap(int) 和 guava Maps.newHashMapWithExpectedSize(int) 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30220820/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com