Data structures 当插槽数量未知时,如何使用哈希表?

Data structures 当插槽数量未知时,如何使用哈希表?,data-structures,hashmap,hashtable,Data Structures,Hashmap,Hashtable,当使用时所需的插槽数量未知时,如何使用哈希表和链接?换句话说,在定义哈希表的所有键和值之前,我需要使用哈希表,我该怎么做?我似乎无法理解,因为我假设我需要知道所需的插槽数量,以便生成哈希函数将键映射到这些插槽,但可能我没有完全正确地理解哈希表 如果有人能帮我,我将不胜感激 致以最良好的祝愿, Skyfe.一种方法是简单地采用以下想法 您可以决定几个因素,比如初始大小、最大负载和增长因子。例如,可以使用初始大小=100、最大负载=0.5和生长因子=2 如果插入了足够多的项目,在某一点上,您将拥有超

当使用时所需的插槽数量未知时,如何使用哈希表和链接?换句话说,在定义哈希表的所有键和值之前,我需要使用哈希表,我该怎么做?我似乎无法理解,因为我假设我需要知道所需的插槽数量,以便生成哈希函数将键映射到这些插槽,但可能我没有完全正确地理解哈希表

如果有人能帮我,我将不胜感激

致以最良好的祝愿,
Skyfe.

一种方法是简单地采用以下想法

您可以决定几个因素,比如初始大小、最大负载和增长因子。例如,可以使用初始大小=100、最大负载=0.5和生长因子=2

如果插入了足够多的项目,在某一点上,您将拥有超过50=100*0.5个项目。此时,您将分配一个大小为200=初始大小*增长因子=100*2的数组,重新分配项目,并删除旧数组。等等

注二:

  • 实际上,您不希望完全按照给定的增长因子进行乘法,因为您可能希望数组长度为素数。所以你乘以因子,找到最近的大素数(你应该预先计算)

  • 收缩是一样的,但你应该使用不同的滞后因素。请参见上面的链接


一种方法就是简单地采用“自由”的思想

您可以决定几个因素,比如初始大小、最大负载和增长因子。例如,可以使用初始大小=100、最大负载=0.5和生长因子=2

如果插入了足够多的项目,在某一点上,您将拥有超过50=100*0.5个项目。此时,您将分配一个大小为200=初始大小*增长因子=100*2的数组,重新分配项目,并删除旧数组。等等

注二:

  • 实际上,您不希望完全按照给定的增长因子进行乘法,因为您可能希望数组长度为素数。所以你乘以因子,找到最近的大素数(你应该预先计算)

  • 收缩是一样的,但你应该使用不同的滞后因素。请参见上面的链接


一种方法就是简单地采用“自由”的思想

您可以决定几个因素,比如初始大小、最大负载和增长因子。例如,可以使用初始大小=100、最大负载=0.5和生长因子=2

如果插入了足够多的项目,在某一点上,您将拥有超过50=100*0.5个项目。此时,您将分配一个大小为200=初始大小*增长因子=100*2的数组,重新分配项目,并删除旧数组。等等

注二:

  • 实际上,您不希望完全按照给定的增长因子进行乘法,因为您可能希望数组长度为素数。所以你乘以因子,找到最近的大素数(你应该预先计算)

  • 收缩是一样的,但你应该使用不同的滞后因素。请参见上面的链接


一种方法就是简单地采用“自由”的思想

您可以决定几个因素,比如初始大小、最大负载和增长因子。例如,可以使用初始大小=100、最大负载=0.5和生长因子=2

如果插入了足够多的项目,在某一点上,您将拥有超过50=100*0.5个项目。此时,您将分配一个大小为200=初始大小*增长因子=100*2的数组,重新分配项目,并删除旧数组。等等

注二:

  • 实际上,您不希望完全按照给定的增长因子进行乘法,因为您可能希望数组长度为素数。所以你乘以因子,找到最近的大素数(你应该预先计算)

  • 收缩是一样的,但你应该使用不同的滞后因素。请参见上面的链接


这与您想要的类似:

通常的方法是使用与动态数组相同的逻辑:have 当散列中的项目过多时,存储桶数和 表,创建一个更大的新哈希表,并移动所有 将项目添加到新哈希表中


这与您想要的类似:

通常的方法是使用与动态数组相同的逻辑:have 当散列中的项目过多时,存储桶数和 表,创建一个更大的新哈希表,并移动所有 将项目添加到新哈希表中


这与您想要的类似:

通常的方法是使用与动态数组相同的逻辑:have 当散列中的项目过多时,存储桶数和 表,创建一个更大的新哈希表,并移动所有 将项目添加到新哈希表中


这与您想要的类似:

通常的方法是使用与动态数组相同的逻辑:have 当散列中的项目过多时,存储桶数和 表,创建一个更大的新哈希表,并移动所有 将项目添加到新哈希表中


Java HashMap的可能副本能够动态重新灰化以适应增长,并且可以使用初始设置进行调整。有关如何操作的讨论及其源代码(包括如何操作的注释),请参阅。Java HashMap的可能副本能够动态重新灰化以适应增长,并且可以使用初始设置进行调整。有关如何操作的讨论及其源代码(包括如何操作的注释),请参阅。Java HashMap的可能副本能够动态重新灰化以适应增长,并且可以使用初始设置进行调整。请参阅,以了解其操作方式的讨论及其源代码,其中包括对其操作方式的注释。Java HashMap的可能副本能够动态重新灰化以适应增长,并且可以进行调整