HashMap和TreeMap的区别

相同点

不管是HashMap还是TreeMap都是通过对象来对对象进行索引的Map集合。

键值对

我们把用来索引的对象叫做Key,而索引对应的对象叫做Value。这就是我们平时所说的键值对。

类关系

他们的类关系如图所示:
在这里插入图片描述

HashMap和TreeMap的区别

1. 数据结构方面

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

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

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

2. 效率方面

HashMap比TreeMap的性能更高。

HashMap时间复杂度是O(1),它通过哈希函数计算的哈希地址;TreeMap主要是保证数据平衡,时间复杂度是O(log2 n)

3. 线程安全方面

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

如果在多线程并发情况下建议使用ConcurrentHashMap;如果既要保证线程安全又要保证顺序,可以使用Collections.synchronizedMap()方法转化为线程安全的集合。

4. 应用场景方面

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

TreeMap适用于按自然顺序或自定义顺序遍历键的场景。HashMap适用于在Map中插入、删除和定位元素。

日常开发建议多使用HashMap,需要排序时候使用TreeMap。

总结

在这里插入图片描述
在这里插入图片描述
参考资料【Java面试】 爆赞!面试官都惊呆了,HashMap和TreeMap的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值