【问题标题】:Confusion in the differences between hashmap and hashtable混淆hashmap和hashtable的区别
【发布时间】:2013-05-18 03:30:56
【问题描述】:

我有一个困惑:

我在许多帖子中读到 哈希映射 被实现为二叉搜索树,这使得各种操作对数顺序的时间复杂度。

另一方面,

哈希表提供恒定时间获取。

但是,正如我在 this 帖子中所读到的,在检索/搜索两种数据结构中的元素的复杂性方面并没有提供任何区别。

所以,这是我的问题-

由于哈希表保证提供恒定的搜索时间复杂度,它们的实现必须与哈希映射不同。 那么,如果他们不提供恒定时间搜索,为什么有人会使用哈希映射。另外,为什么首先将它们实现为二叉搜索树?

我知道哈希映射以排序形式存储键并通过映射提供迭代。但是,也可以在哈希表中提供相同的内容。

【问题讨论】:

  • 在重新标记之前,该问题既没有提到 Java 也没有提到 C++,而是自始至终使用了 Java 术语,并链接到一个专门关于 Java 的问题。如果您从一开始就适当地标记问题(并且理想地使用您所询问的语言的标准术语),这将有助于避免混淆。

标签: c++ data-structures hashmap hashtable binary-search-tree


【解决方案1】:

您的困惑源于以下几点:

哈希映射被实现为二叉搜索树

他们不是。任何明智的命名约定都不会使用“哈希图”一词来描述基于树的结构。

例如,在 Java 中,HashMap 基于哈希表,TreeMap 基于树。

C++ 在其标准容器的命名中既不使用“散列”也不使用“树”。与HashMapTreeMap大致对应的两个容器是std::unordered_mapstd::map

【讨论】:

    猜你喜欢
    • 2020-10-11
    • 2010-11-15
    • 2012-02-11
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 2015-07-18
    相关资源
    最近更新 更多