Java 在hashmap或hashtable中重新灰化的成本

Java 在hashmap或hashtable中重新灰化的成本,java,hashmap,hashtable,Java,Hashmap,Hashtable,我已经研究过这个相关问题。然而,我需要知道再灰化过程是如何进行的。例如,如果载荷系数为.75 1-这是否意味着我们忘记了现有的哈希表,对于每个现有条目,我们都会逐个获取它们,并使用新的哈希函数将它们重新输入到新的存储桶集合中 2-如果是这样,那么重新灰化的性能是什么,比如当有n个条目退出时。是否摊销 这是否意味着我们忘记了现有的hashTable和for 每一个现有条目我们都会一个接一个地获取它们,并将它们重新输入到新条目中 这一次使用新的哈希函数的存储桶集 是的,当底层数组被认为太小时就会发生

我已经研究过这个相关问题。然而,我需要知道再灰化过程是如何进行的。例如,如果载荷系数为.75

1-这是否意味着我们忘记了现有的哈希表,对于每个现有条目,我们都会逐个获取它们,并使用新的哈希函数将它们重新输入到新的存储桶集合中

2-如果是这样,那么重新灰化的性能是什么,比如当有n个条目退出时。是否摊销

这是否意味着我们忘记了现有的hashTable和for 每一个现有条目我们都会一个接一个地获取它们,并将它们重新输入到新条目中 这一次使用新的哈希函数的存储桶集

是的,当底层数组被认为太小时就会发生这种情况。我们必须重新计算每个条目的哈希,因为新哈希表根据其大小具有不同的压缩函数

如果是这样的话,那么再灰化的表现是什么,比如说什么时候 已退出n个条目。是否摊销

是的,对于前一个数组中的每个条目,都会计算一个新的哈希值并重新输入该条目。因此
O(n)
摊销。根据bucket链表的实现方式,最坏的情况可能是
O(n^2)
,因为所有条目都可能输入到同一个bucket中

这是否意味着我们忘记了现有的hashTable和for 每一个现有条目我们都会一个接一个地获取它们,并将它们重新输入到新条目中 这一次使用新的哈希函数的存储桶集

是的,当底层数组被认为太小时就会发生这种情况。我们必须重新计算每个条目的哈希,因为新哈希表根据其大小具有不同的压缩函数

如果是这样的话,那么再灰化的表现是什么,比如说什么时候 已退出n个条目。是否摊销


是的,对于前一个数组中的每个条目,都会计算一个新的哈希值并重新输入该条目。因此
O(n)
摊销。根据bucket链表的实现方式,最坏的情况可能是
O(n^2)
,因为所有条目都可能输入到同一个bucket中。

基本上,使用旧的hashtable中的条目构造一个新的hashtable。有很多方法可以做到这一点,工作可以分布在多个访问上,也可以同时完成。对于标准哈希方案,实际的重新哈希基本上是O(n)。基本上,使用旧哈希表中的条目构造新哈希表。有很多方法可以做到这一点,工作可以分布在多个访问上,也可以同时完成。对于标准哈希方案,实际的重新哈希基本上是O(n)。