2013-05-18 39 views
4

之间的区别我有一个困惑:迷茫中的HashMap和Hashtable

我在很多帖子也读了这散列地图作为二叉搜索树,这使得各种操作数秩序的时间复杂度实现。

哈希表另一方面提供恒定时间提取。

但是,正如我在this后阅读,无差异已经在为这两个数据结构元素的检索/搜索复杂的条款提供。

所以,这里是我的question-

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

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

+1

在您重新签名之前,该问题并未提及Java和C++,而是始终使用Java术语,并链接到专门针对Java的问题。如果您从一开始就对问题进行了恰当的标记(以及您所问语言的理想标准术语),这将有助于避免混淆。 – NPE

回答

7

你的困惑从以下茎:

哈希映射为二叉搜索树

他们没有实现。没有明智的命名约定会使用术语“hashmap”来描述基于树的结构。

例如,在Java中,HashMap基于散列表,TreeMap基于树。

C++在其标准容器的命名中既不使用“哈希”也不使用“树”。对应于HashMapTreeMap的两个容器是std::unordered_mapstd::map