簡體   English   中英

Hashmap哈希碼到內部表索引的轉換

[英]Hashmap hashcode to internal table index conversion

哈希圖通常使用存儲桶的內部數組(表)來實現。 通過鍵訪問哈希圖時,我們使用特定於鍵類型的(特定於邏輯類型的)哈希函數來獲取鍵的哈希碼。 然后,我們需要將哈希碼映射到實際的內部存儲桶表索引。

 key -> (hash function) -> hashcode -> (???) -> index in internal table

有時內部表可能會縮小和擴展,具體取決於哈希圖的填充率。 然后,可能可以對hashcode-> index轉換方法進行一些更改。

例如,我們的哈希函數返回32位無符號整數值,並且

時刻A:內部表的容量為10000

時刻B:內部表的容量為100000

通常使用什么算法或方法執行哈希碼->內部表索引轉換? 如何為他們解決表大小調整問題?

通常,一個簡單的模就可以完成工作。

Wikipedia為例,它很簡單:

hash = hashfunc(key)
index = hash % array_size

如您所說,調整大小取決於哈希圖填充率。 重新分配數組(請參閱realloc() ),然后在給定新數組大小的情況下重新計算索引,並將值復制到其新索引。

在這里這里都寫過這個。

當您增加索引的矢量的大小時,可以確保在較短的矢量上運行良好的算法在較長的矢量上運行較差。 當您將向量加長時,可以預先進行測試並使用新的算法。 或者,隨着當前向量中占用索引的數量增加,請使用背景優先級較低的線程來測試數據上的不同算法。

正如我的一個答案中的示例所示,“新算法”只不過是一對不同的匹配素數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM