我想知道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標記併爲此感到抱歉 –