如果我有一个哈希表,我知道将存储13个项目,如何将我的表初始化为适当的大小?我在书中读到负载系数应该等于或低于2/3。这是否意味着如果我已经知道我的表中任何一点的最大项目数为13,我可以这样做:
tableSize = nextPrime((numEntries * 3)/2);
我对上述任务的思考是numEntries代表数字13,因为我知道负载系数必须低于2/3,我找到了比率为2/3所需的值。
答案 0 :(得分:0)
您可以将哈希表初始化为new Hashtable(initialSize, loadFactor)
简单来说,负载因子决定了何时为哈希表分配更多内存
您必须意识到,与初始化不同,您无需在初始化时将内存指定为散列表。适当的loadfactor有助于减少重复内存分配的开销。
AFAIK的加载因子为2/3表示哈希表在2 / 3rds满时会被分配内存。
退房:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Hashtable.html
如果您知道散列表将存储13个条目,为什么不用
初始化它 new Hashtable(13)
并且不用担心在需要新分配时会出现的 loadfactor 。