假设根据字符串“temp”的散列函数的数组索引是155并且位置155被预先占用,则尝试位置156。假设位置156可用,因此该条目保存在位置156而不是155.稍后我找到另一个字符串“another_temp”,它映射到位置156.再次将其保存在下一个可用位置157中。
问题是:如果我想找出“another_temp”的位置,我怎么知道它是157而不是156,即使哈希函数返回156?
感谢。
答案 0 :(得分:1)
您需要比较密钥,而不仅仅是哈希码。在哈希表中,您无论如何都需要存储密钥(在您的情况下为“temp”和“another_temp”)。仅仅存储和比较哈希值是不够的,因为哈希值不是唯一的。
开放式寻址存在一些问题。一个是:删除条目后该怎么办?通常您存储一个特殊的“已删除”标记。另一个问题是:如果发生冲突,你应该增加哈希码吗?您将在维基百科中找到更多详细信息。