簡體   English   中英

哈希圖如何使用哈希鍵檢索值?

[英]How hashmap retrieves value with hash key?

當人們說Hashmap比List更快時,我對HashmapHashtable概念更加困惑。 我對散列概念很清楚,其中值存儲在給定鍵的散列代碼中。

但是,當我想檢索數據的工作方式時,例如,我在HashMap中存儲了n個具有n個不同鍵 的字符串 如果我想檢索與特定鍵關聯的特定值,它將如何在O(1)的時間內返回它? 因為哈希鍵與所有其他鍵進行比較,對嗎?

讓我們進行一次文字之旅,說您的所有字母都有一堆奇怪的m&m。

現在,您的工作就是向人們推薦m&m的字母顏色組合。

您可以選擇如何組織店鋪。 (這種組織行為將在隱喻上是我們的哈希函數。)

您可以按顏色,按字母或按兩種方式將M&M分類到存儲桶中。 問題隨之而來,是什么為您提供了特定請求最快的檢索時間?

答案很直觀,因為在每個存儲桶中提供最少的不同M&M的排序有助於最有效的查詢。

可以說有人問你是否有綠色Q; 如果您所有的M&M都放在單個垃圾箱,列表或存儲桶中或其他非結構化的容器中,那么與保持組織整齊的商店相比,答案在O(1)中將難以接近。

這種類比依賴於單獨鏈接的概念,其中每個哈希鍵對應於多個元素的容器。

沒有這個概念,散列的想法更普遍地是在整個數組中統一使用鍵,以使攤余性能保持恆定。 沖突可以通過多種方法來解決,Wikipedia文章將為您提供所有相關信息。 http://zh.wikipedia.org/wiki/哈希表

“如果一組鍵值對是固定的,並且提前知道(因此不允許插入和刪除),則可以通過謹慎選擇散列函數,存儲區表大小和內部數據結構來降低平均查找成本特別是,人們可能能夠設計出一種無碰撞甚至完美的“

暫無
暫無

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

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