如果我有一个我知道将存储 13 个项目的哈希表,我如何将我的表初始化为适当的大小?我在我的书中读到负载系数应该在 2/3 或以下。这是否意味着如果我已经知道在任何时候我的表中的最大项目数将是 13,我可以执行以下操作:
tableSize = nextPrime((numEntries * 3)/2);
我对上述分配的想法是 numEntries 代表数字 13,因为我知道负载因子必须低于 2/3,所以我找到了使比率为 2/3 所需的值。
如果我有一个我知道将存储 13 个项目的哈希表,我如何将我的表初始化为适当的大小?我在我的书中读到负载系数应该在 2/3 或以下。这是否意味着如果我已经知道在任何时候我的表中的最大项目数将是 13,我可以执行以下操作:
tableSize = nextPrime((numEntries * 3)/2);
我对上述分配的想法是 numEntries 代表数字 13,因为我知道负载因子必须低于 2/3,所以我找到了使比率为 2/3 所需的值。
您可以将哈希表初始化为new Hashtable(initialSize, loadFactor)
简单来说,负载因子决定了何时为哈希表分配更多内存
您必须知道,与数组不同,您不需要在初始化哈希表时指定内存。适当的负载因子有助于减少重复内存分配的开销。
AFAIK 2/3 的负载因子表示哈希表在 2/3 满时分配内存。
查看:http ://docs.oracle.com/javase/1.4.2/docs/api/java/util/Hashtable.html
如果您知道哈希表将存储 13 个条目,为什么不将其初始化为
new Hashtable(13)
并且不用担心在需要新分配时出现的负载因子。