在 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 holdexpectedSize
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/