返回

惊呆面试官的回答:HashMap和TreeMap的区别

发布时间:2022-11-11 21:22:45 232
# 数据

1、两者区别

我们知道不管是HashMap还是TreeMap,都是通过对象来对对象进行索引的Map集合。我们把用来索引的对象叫做Key,而索引对应的对象叫做Value。这就是我们平时说的键值对。它们的类关系如图所示:

惊呆面试官的回答:HashMap和TreeMap的区别_红黑树

关于HashMap和TreeMap的区别,我从以下4个方面来分析:

惊呆面试官的回答:HashMap和TreeMap的区别_红黑树_02

1)数据结构方面

HashMap是基于哈希表+数组来实现的,而TreeMap是基于红黑树实现的。

使用HashMap需要键对象明确定义了hashCode()和equals()这两个方法,而且为了优化HashMap空间的使用,可以调整初始容量大小和扩容。

TreeMap没有大小设置选项,因为,红黑树结构总是处于平衡状态。

惊呆面试官的回答:HashMap和TreeMap的区别_线程安全_03

2)效率方面

HashMap比TreeMap的性能更高。

HashMap的时间复杂度是O(1),它是通过哈希函数计算的哈希地址。

而TreeMap主要是保证数据平衡,时间复杂度是O(log2 n)。

惊呆面试官的回答:HashMap和TreeMap的区别_红黑树_04

3)线程安全方面

HashMap和TreeMap都是非线程安全的。

如果在多线程并发情况下建议使用ConcurrentHashMap;

如果既要保证线程安全又要保证顺序,可以使用 Collections.synchronizedMap()方法转化为线程安全的集合。

惊呆面试官的回答:HashMap和TreeMap的区别_时间复杂度_05

4)应用场景方面

HashMap是无序的,而TreeMap是有序的。

TreeMap适用于按自然顺序或自定义顺序遍历键的场景。

HashMap适用于在Map中插入、删除和定位元素。

日常开发建议多使用HashMap,只有在需要排序的时候才使用TreeMap。

2、总结

最后,我把HashMap和TreeMap的更多详细区别,都整理在这张表中了,需要的小伙伴可以在我的个人主页中获取。

惊呆面试官的回答:HashMap和TreeMap的区别_红黑树_06

惊呆面试官的回答:HashMap和TreeMap的区别_时间复杂度_07

惊呆面试官的回答:HashMap和TreeMap的区别_时间复杂度_08

惊呆面试官的回答:HashMap和TreeMap的区别_时间复杂度_09

好了,以上就是我对HashMap和TreeMap的理解。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
走进Redis-扯扯集群 2022-11-11 20:31:22