5

我只知道hashmap和map的区别是hashmap是用hash函数实现的,而map是用tree实现的。任何机构都可以添加更多内容吗?

基于此,有什么 hashmap 可以做而 map 不能做的事情吗?

4

3 回答 3

10
  • 哈希图在平均情况下的访问性能更好(O(1)),但在最坏情况下的性能更差(O(n))。地图总是 O(lg(n))。

  • 映射按其键排序,哈希映射不是。

  • Hashmaps 通常比 map 使用更多的内存。

  • 地图通常允许更快的迭代。

  • 好的散列函数比好的排序函数更难编写(也更难分析)。

我不相信哈希图可以做任何地图不能做的事情。

于 2010-03-30T00:24:28.047 回答
3

映射要求键具有严格的弱排序,这可能不存在。哈希图只需要一个哈希函数。因此,通过这种方式,hashmap 可以与没有严格弱排序的键一起使用。

于 2010-03-30T01:09:37.927 回答
0

哈希映射相对于树的一个优点是,在多线程环境中,您不必锁定整个容器来添加或删除单个键 - 锁定哈希表中的单个相关条目(几乎)就足够了。

几乎是因为可能有要更新的元数据(例如哈希表中的项目数)。当然,您可能需要锁定整个表以扩大或缩小它。

于 2010-03-30T01:14:23.393 回答