Java 哈希集中linkedlist存储桶的最大长度?

Java 哈希集中linkedlist存储桶的最大长度?,java,hashmap,hashtable,hashset,hashcode,Java,Hashmap,Hashtable,Hashset,Hashcode,哈希集中LinkedList的最大大小是多少?如果达到该最大大小,会发生什么情况?如果所有n个输入元素都具有哈希代码,这些哈希代码将值存储在哈希映射的同一节点数组中。i、 e由于特定的输入,存储桶0持续增长而其余的存储桶未填充时会发生什么情况。在这种情况下是否进行了重新灰化,或者是否有特定的方法来避免此问题?该策略在某种程度上是特定于实现的,但通常当HashMap(并且HashSet基于此)总共达到64个条目,单个bucket中有8个条目,它将转换为树。在调整大小之前,当一个存储桶的大小加倍时,

哈希集中LinkedList的最大大小是多少?如果达到该最大大小,会发生什么情况?如果所有n个输入元素都具有哈希代码,这些哈希代码将值存储在哈希映射的同一节点数组中。i、 e由于特定的输入,存储桶0持续增长而其余的存储桶未填充时会发生什么情况。在这种情况下是否进行了重新灰化,或者是否有特定的方法来避免此问题?

该策略在某种程度上是特定于实现的,但通常当
HashMap
(并且
HashSet
基于此)总共达到64个条目,单个bucket中有8个条目,它将转换为
。在
调整大小
之前,当一个存储桶的大小加倍时,会考虑在何处放置一个条目,这被称为
重新设置
,这样做是为了尝试将条目移动到不同的存储桶


有关一些实现细节,请参阅和

在Java@Andreas中,它是如何在无限链表中得到O(1)中的元素的?它实际上是摊销的
O(1)
,当在树中搜索时,你仍然得到
O(logn)
它不是,不是真的。但在适当的散列函数下,散列桶冲突的概率很小,可以认为分摊的复杂度为O(1)。如果使用非常糟糕的散列函数,所有对象可能最终都位于同一个bucket中,复杂性将为O(n)。但是,对于散列集合,我们假设有足够的散列函数,因此O(1),因为否则我们不会使用它们。真正的问题不是糟糕的散列函数,而是恶意选择的键(或
HashSet
的元素)。仅当所有键都正确执行
compariable
时才起作用。