2011-04-08 41 views
6

通過trie map我是指一個關聯數組,其中有效載荷存儲在trie而不是散列表中。爲什麼hash映射比trie映射好?

當我使用散列圖/表時,我使用的鍵通常是字符串。哈希映射對某些基於樹的映射有什麼優勢?我讀過一個哈希映射更快 - 但在我看來,一致的哈希函數將不得不檢查(char)數組的最後一個哈希的每個元素 - 遍歷數組一次。在一個特里你同樣必須遍歷數組一次。

在我看來,編碼小對象時(即使您只允許小寫字母字符在鍵中,它是每個節點26個指針,並且通常每個鍵多個節點),這會使用更多的內存,但在正面你永遠不必擔心調整大小。爲什麼散列映射如此常見,但我從來沒有見過映射圖?

回答

8

哈希映射比特里映射更常見,因爲它們更通用:它們可以用於處理任何可哈希的對象,而特里可以處理序列。哈希表在常見實現中也具有更好的引用位置,因爲它們將元素靠近在一起。

(嚴格的說,每一個對象是位序列,但隨後一個通用的線索會要求用戶將其存儲在特里之前序列化的對象。相比於定義自定義散列函數這是相當不方便。)

+0

實際上,它也很有可能構建樹的嘗試。 – dfeuer 2015-03-20 06:31:52

12

爲了防止你是一個Scala程序員,TrieMap是一個「哈希陣列映射trie的併發線程安全無鎖實現」。目前沒有Java標準庫。

相關問題