我正在为我的数据结构类创建自己的哈希表adt,并且遇到了一个问题。我用下面的函数来散列(键,值)在我的哈希表条目(关键是一个字符串,该值可以是任何数据类型,它是通用的):调整大小后未找到散列表中的旧元素?
private int hashCode(String key)
{
final int constant = 37;
int hash = 0;
for(int i=0;i<key.length();i++)
{
hash+=(int)key.charAt(i) * Math.pow(constant,i);
}
return hash;
}
private int hash(String key)
{
return hashCode(key) % capacity
}
使用线性探测插入件成表工作正常,但是如果我选择展开表散列(Key)的功能将不能充分的哈希表的GET(键)操作的能力已经改变工作(它会映射到不正确的位置之前,当它正确映射的表扩展名)。有没有什么简单的方法可以编辑这个考虑到散列表的扩展,可以说是两个因素。即:如果负载因子> 0.5增加2 *表的容量。
重散列所有键调整大小后阵是一种常见的做法。你可能想看看你的教科书中有关如何完成的更深入的解释。 – 4castle