gpt4 book ai didi

java - 当 HashMap 的初始容量不是 2 的幂时指定它是否比根本不指定更好?

转载 作者:行者123 更新时间:2023-11-29 06:34:21 24 4
gpt4 key购买 nike

假设我知道 HashMap 中键值对的确切数量,并且我知道它不是 2 的幂。在这些情况下,我应该指定初始容量还是不是 ?我可以获得最接近的 2 的幂并指定它,但我仍然想知道在这种情况下哪种方法更好(当我不想计算最接近的 2 的幂时)。

谢谢!

最佳答案

如果您查看 java.util.HashMap 源代码 (java 1.7)(您可以在 JDK 目录中的 src.zip 文件中找到),您将看到 HashMap 的 put 方法使用 inflateTable 方法创建一个存储 HashMap 条目的数组,该方法总是将 HashMap 的容量增加到大于(或等于)您指定的大小的 2 的幂。

方法如下:

    private void inflateTable(int toSize) {
// Find a power of 2 >= toSize
int capacity = roundUpToPowerOf2(toSize);

threshold = (int) Math.min(capacity * loadFactor, MAXIMUM_CAPACITY + 1);
table = new Entry[capacity];
initHashSeedAsNeeded(capacity);
}

因此,您指定的大小是否为 2 的幂并不重要。

关于java - 当 HashMap 的初始容量不是 2 的幂时指定它是否比根本不指定更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24387305/

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