栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java集合- HashMap 和 TreeMap 的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java集合- HashMap 和 TreeMap 的区别

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

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

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

一、线程安全

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

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

二、实现的接口

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

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

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

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

三、Map具体实现

  HashMap:基于哈希表实现。使用HashMap要求添加的键类明确定义了hashCode()和equals()[可以重写hashCode()和equals()],为了优化HashMap空间的使用,您可以调优初始容量和负载因子。

	// 构建一个拥有特定容量和加载因子的空的哈希映像
	HashMap(int initialCapacity, float loadFactor); 

  TreeMap:基于红黑树实现。TreeMap没有调优选项,因为该树总处于平衡状态。

四、性能

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/723257.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号