HashMap和TreeMap的区别

r囧r小猫 2023-10-13 22:56 206阅读 0赞

HashMap和TreeMap的区别

  • 相同点
  • 键值对
  • 类关系
  • HashMap和TreeMap的区别
      1. 数据结构方面
      1. 效率方面
      1. 线程安全方面
      1. 应用场景方面
  • 总结

相同点

不管是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的区别

发表评论

表情:
评论列表 (有 0 条评论,206人围观)

还没有评论,来说两句吧...

相关阅读

    相关 HashMapTreeMap区别

    HashMap:数组方式存储key/value,线程非安全,允许null作为key和value,key不可以重复,value允许重复,不保证元素迭代顺序是按照插入时的顺序,ke