我只知道hashmap和map的区别是hashmap是用hash函数实现的,而map是用tree实现的。任何机构都可以添加更多内容吗?
基于此,有什么 hashmap 可以做而 map 不能做的事情吗?
我只知道hashmap和map的区别是hashmap是用hash函数实现的,而map是用tree实现的。任何机构都可以添加更多内容吗?
基于此,有什么 hashmap 可以做而 map 不能做的事情吗?
哈希图在平均情况下的访问性能更好(O(1)),但在最坏情况下的性能更差(O(n))。地图总是 O(lg(n))。
映射按其键排序,哈希映射不是。
Hashmaps 通常比 map 使用更多的内存。
地图通常允许更快的迭代。
好的散列函数比好的排序函数更难编写(也更难分析)。
我不相信哈希图可以做任何地图不能做的事情。
映射要求键具有严格的弱排序,这可能不存在。哈希图只需要一个哈希函数。因此,通过这种方式,hashmap 可以与没有严格弱排序的键一起使用。
哈希映射相对于树的一个优点是,在多线程环境中,您不必锁定整个容器来添加或删除单个键 - 锁定哈希表中的单个相关条目(几乎)就足够了。
几乎是因为可能有要更新的元数据(例如哈希表中的项目数)。当然,您可能需要锁定整个表以扩大或缩小它。