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

网站建设5年前发布
9 0 0

​ 前几天,有一位粉丝在直播间问了我这样一个问题,说HashMap和TreeMap有什么区别。今天,我给大家分享一下我的理解。,我们知道不管是HashMap还是TreeMap,都是通过对象来对对象进行索引的Map集合。我们把用来索引的对象叫做Key,而索引对应的对象叫做Value。这就是我们平时说的键值对。它们的类关系如图所示:,2023030601404452292b093e12a270e3a034a9aabc7ed7f2452a583,关于HashMap和TreeMap的区别,我从以下4个方面来分析:,20230306013846a5bd6cd81618825777f6118436427b9174e0e4955,HashMap是基于哈希表+数组来实现的,而TreeMap是基于红黑树实现的。,使用HashMap需要键对象明确定义了hashCode()和equals()这两个方法,而且为了优化HashMap空间的使用,可以调整初始容量大小和扩容。,TreeMap没有大小设置选项,因为,红黑树结构总是处于平衡状态。,20230306013846c46a4a194c0fbc2bdf26173ba226f340f0a01d786,HashMap比TreeMap的性能更高。,HashMap的时间复杂度是O(1),它是通过哈希函数计算的哈希地址。,而TreeMap主要是保证数据平衡,时间复杂度是O(log2 n)。,2023030601384746dd1283907540c90be287e7b62f3fef5ed8ee677,HashMap和TreeMap都是非线程安全的。,如果在多线程并发情况下建议使用ConcurrentHashMap;,如果既要保证线程安全又要保证顺序,可以使用 Collections.synchronizedMap()方法转化为线程安全的集合。,20230306013847635105a36a1297b9371926e3459719a5bd0783848,HashMap是无序的,而TreeMap是有序的。,TreeMap适用于按自然顺序或自定义顺序遍历键的场景。,HashMap适用于在Map中插入、删除和定位元素。,日常开发建议多使用HashMap,只有在需要排序的时候才使用TreeMap。,最后,我把HashMap和TreeMap的更多详细区别,都整理在这张表中了,需要的小伙伴可以在我的个人主页中获取。,20230306013847c9215bb118f1c42f17b5256c2de3567a75b828610,20230306014045d8b310073d49095ded9794082ad2b93c5bb47c103,好了,以上就是我对HashMap和TreeMap的理解。

© 版权声明

相关文章