我想知道哈希表在增加容量时如何找到正确的索引。例如,假设我有一个默认容量为 10 的哈希表。现在我们必须添加 (key,value) 对 [14,"hello 1"]
我们将使用下面的索引机制为上面的键 '14' 获得的索引是 '4'。所以 hashtable 会把这个 (key,value) 对保存在索引 4 中。
int index = key.GetHashCode() % 10
现在我们继续将项目添加到哈希表中,它达到了负载因子。所以是时候调整大小了。让我们假设 hastable resize 到 20。
现在我要在这个哈希表中搜索我的旧键“14”。现在根据索引机制,我将得到这个键的索引为 14。所以我将从索引 14 开始搜索哈希表,但理想情况下它在索引 4 中。
所以我的问题是哈希表在调整大小时如何跟踪现有的键索引?或者哈希表在调整大小时是否会重新散列所有现有键?