Java集合- HashMap 和 TreeMap 的区别

导读:本篇文章讲解 Java集合- HashMap 和 TreeMap 的区别,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

​ 在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value。这就是我们平时说的键值对。

HashMap通过hashcode对其内容进行快速查找(哈希表通过把关键码值映射到表中一个位置来访问记录,不需比较便可直接取得所查记录,加快了查找的速度)。

而 TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。

一、数据结构

HashMap: 数组+列表+红黑树

在这里插入图片描述

TreeMap: 红黑树

在这里插入图片描述

二、线程安全

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

没有关键字synchronized修饰,也没有JUC包类的同步机制。

三、实现的接口

TreeMap 和 HashMap 都继承自 AbstractMap ,但是需要注意的是 TreeMap 它还实现了 NavigableMap 接口和 SortedMap 接口。

  • 实现 AbstractMap 类,覆盖了hashcode() 和 equals() 方法,以确保两个相等的映射返回相同的哈希值。

  • 实现 NavigableMap 接口让 TreeMap 有了对集合内元素的搜索的能力。

  • 实现 SortedMap 接口让 TreeMap 有了对集合中的元素根据键排序的能力。默认是按 key 的升序排序,不过我们也可以指定排序的比较器。

四、性能

HashMap:适用于在Map中插入、删除和定位元素。
  Treemap:适用于按自然顺序或自定义顺序遍历键(key)。

————————————————
版权声明:本文为CSDN博主「jinyangjie0」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/JinYJ2014/article/details/122764557

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/68393.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!