【发布时间】:2012-03-18 21:01:28
【问题描述】:
Java Hashtable 有一个构造函数,您可以在其中指定 loadFactor。但是,如果知道 initialCapacity (n),那么指定 loadFactor 的意义何在?
假设它的桶数组的大小是恒定的,构造函数Hashtable(int initialCapacity, float loadFactor)
只需创建一个容量大于 initialCapacity 的 Hash Table 以确保正确的 loadFactor 吗?
【问题讨论】:
-
负载因子表示何时调整数组大小。更高的负载系数意味着稍后调整大小和更多的冲突。
-
问题在问什么,我认为(以及为什么我认为这是一个有趣的问题)是:他们真的只是按照使用
initialCapacity盲目地给出初始大小吗?因为,如果是这样,它们将需要在添加initialCapacity值时调整大小(除非 loadFactor 为 1)。因此,假设initialCapacity通常是对将添加多少个值的准确估计,那么计算初始大小以便可以在不调整大小的情况下添加initialCapacity点不是更有意义吗?换句话说:初始容量是指初始表大小还是初始容量? -
@andrewcooke:我明白你的意思,但根据the Javadoc,“容量是哈希表中buckets的数量"(原文为斜体),所以这里没有矛盾——也许只是用词不当。
-
您还在回答中说它们只是提示。但是,在实践中,至少对于 gnu 类路径,您是正确的 - developer.classpath.org/doc/java/util/HashMap-source.html
-
sun 类似,但向上取整为 2 的幂 - kickjava.com/src/java/util/HashMap.java.htm
标签: java data-structures