我想知道hashtable在增加容量时如何找到正确的索引。例如,让我们假设我有一个默认容量10哈希表现在,我们必须添加(键,值)对 [14,“你好1”]哈希表在调整大小时如何跟踪现有密钥索引?
,我们将获得上述键“14”使用索引下面的索引机制是'4'。因此,哈希表要拯救这个(键,值)对指数4
int index = key.GetHashCode() % 10
现在我们继续添加项目到哈希表内,并达到客座率。所以是时候调整大小了。假设hastable调整为20.
现在我要在我的旧密钥'14'中搜索这个哈希表。并根据索引机制现在我会得到这个键的索引为14.所以我会开始搜索索引14的哈希表,但理想情况下,它是在索引4.
所以我的问题是如何散列表跟踪现有调整大小时的关键指标?或者,哈希表是否在重新调整大小时重新调整所有现有的键?
@MitchWheat - 他的标记有点......含糊不清,所以我没有声称c#实现的功能。我将删除那一个并重申:“那么,这取决于它如何实施”。 –
在本文中,有一节“加载因子和扩展哈希表”,阅读完它后,它看起来像C#哈希表也调整http://msdn.microsoft.com/en-us/library/ms379571%28v=VS.80 %29.aspx#datastructures20_2_topic5 –
我删除了Java标记并为此感到抱歉 –