【问题标题】:Why are hash maps better than trie maps?为什么 hash map 比 trie map 好?
【发布时间】:2011-08-01 07:51:42
【问题描述】:

我所说的 trie map 是指关联数组,其中有效负载存储在 trie 而不是哈希表中。

当我使用哈希映射/表时,我使用的键通常是字符串。与某些基于 trie 的映射相比,哈希映射有哪些优势?我已经读过哈希映射更快 - 但在我看来,一致的哈希函数必须检查 (char) 数组的每个元素以获取最终哈希 - 遍历数组一次。在 trie 中,您同样必须只对数组进行一次迭代。

在我看来,在对小对象进行编码时,这确实会使用更多的内存(即使您只允许键中的小写字母字符,它是每个节点 26 个指针,并且每个键通常是多个节点),但是在另外,您永远不必担心调整大小。为什么hash map这么常见,却没见过trie map?

【问题讨论】:

    标签: data-structures hashtable hashmap hashcode trie


    【解决方案1】:

    如果您是 Scala 程序员,TrieMap 是“哈希数组映射的 trie 的并发线程安全无锁实现”。目前 Java 标准库中没有。

    【讨论】:

      【解决方案2】:

      Hash map 比 trie map 更常见,因为它们更通用:它们可以用于任何可散列的对象,而 trie 则适用于序列。哈希表在常见实现中也具有更好的引用局部性,因为它们将元素存储在一起。

      (严格来说,每个对象都是一个位序列,但是通用 trie 将要求用户在将对象存储到 trie 之前对其进行序列化。与定义自定义哈希函数相比,这非常不方便。)

      【讨论】:

      • 其实构建树的尝试也是完全可以的。
      猜你喜欢
      • 2013-01-19
      • 2020-12-15
      • 2014-11-20
      • 1970-01-01
      • 2021-10-28
      • 2015-07-10
      • 2020-05-17
      • 1970-01-01
      相关资源
      最近更新 更多