初始容量如何影响 HashMap 的性能



HashMap 的文档包含以下语句:

因此,不要将初始容量设置得太高(或 负载系数太低),如果迭代性能很重要。

有人可以解释一下。我没有看到任何更改或影响

HashMap 负载因子的方法

当您将 HashMap 声明为构造函数参数的一部分时,您可以为其提供初始容量和负载系数:

 HashMap(int initialCapacity, float loadFactor) 
     Constructs an empty HashMap with the specified initial capacity and load factor.

您还可以查看此 SO 线程,了解有关负载系数和初始容量的一些见解。

太大的初始容量和太低的负载因子都会导致哈希表,其中大多数条目都是空的。虽然这降低了冲突的几率(从而提高了平均查找性能),但迭代哈希表的键/值/项需要跳过更多的空槽。

正如其他人所解释的,您可以在构造哈希表对象时给出负载因子和初始容量。

哈希

表背后有很多理论,对于给定的输入集预测,什么是"好"的哈希表,我会从维基百科的文章开始(特别是在链接的"负载因子"部分)。

最新更新