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

Java 初始容量如何影响HashMap的性能,java,performance,hashmap,Java,Performance,Hashmap,包含以下语句: 因此,不要将初始容量设置得太高(或太低),这一点非常重要 如果迭代性能很重要,则负载系数太低 有人能解释一下吗。我看不到任何更改或影响HashMap负载因子的方法当您将HashMap声明为参数的一部分时,您可以为其提供初始容量和负载因子: HashMap(int initialCapacity, float loadFactor) Constructs an empty HashMap with the specified initial capacity and

包含以下语句:

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


有人能解释一下吗。我看不到任何更改或影响HashMap负载因子的方法当您将HashMap声明为参数的一部分时,您可以为其提供初始容量和负载因子:

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

您还可以查看一些关于负载因子和初始容量的细节。

哈希表背后有很多理论,我将从什么构成给定输入集预测的“好”哈希表开始(特别是在链接的“负载因子”部分).

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


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

我看不出这是如何回答大部分问题的。@delnan OP询问如何设置或更改加载因子。此外,提供的SO链接还解释了初始容量、负载系数和再灰化需求之间的关系。是的,这是其中的一部分。我认为这与问题的另一个重要部分有关。“但不管怎样,显然只有我一个人有这种看法,所以这也可能是错误的。”德尔南同意。我无法为表演部分提供一个适当的全面答案。实际上,我一直在浏览HashMap实现代码,以查看迭代器在何处/如何实现,以查看迭代器如何跳过空条目,但您在我之前提供了响应。在大多数(99.99…%)情况下,这并不重要,使用默认构造函数也很好。