Java中HashMap和TreeMap之间的区别

作者: Laura McKinney
创建日期: 2 四月 2021
更新日期: 14 可能 2024
Anonim
105 容器 Map和HashMap的基本用法 hashMap和HashTable的区别 JAVA基础300集最全教程 尚学堂 高淇
视频: 105 容器 Map和HashMap的基本用法 hashMap和HashTable的区别 JAVA基础300集最全教程 尚学堂 高淇

内容


HashMap和TreeMap是Map类,均实现Map接口。 Map是一个存储键值对的对象,其中每个键都是唯一的,但可能存在重复的值。 HashMap类使用哈希表作为数据结构。 TreeMap使用红黑树作为数据结构。 HashMap和Treemap之间的主要区别在于 哈希图 不保留插入顺序,而 树状图 做。

因此,让我们借助下面显示的比较表开始讨论HashMap和TreeMap之间的区别。

  1. 比较表
  2. 定义
  3. 关键差异
  4. 结论

比较表

比较基础哈希图树状图
基本的 HashMap不维护插入顺序。TreeMap维护插入顺序。
数据结构HashMap使用哈希表作为基础数据结构。TreeMap使用Red-Black Tree作为基础数据结构。
空键和值 HashMap允许Null键一次,且广告Null值可以任意次数。TreeMap不允许Null键,但允许Null Values任意次数。
扩展和实施HashMap扩展了AbstractMap类并实现了Map接口。TreeMap扩展了AbstractMap类,并实现了SortedMap和NavigableMap接口。
性能HashMap运行更快。与HashMap相比,TreeMap的运行速度较慢。

HashMap的定义

哈希图 是一个Map类。它使用 哈希表,作为存储地图键值对的数据结构。键值对的插入使用 哈希码。因此,映射中的每个键都必须唯一,因为它将用于检索值。


HashMap中的插入顺序为 保留,这意味着hashmap对象不会按元素插入的顺序返回元素。另一方面,元素返回的顺序是不确定的。

被允许 空值 一次,但是 价值观空值 在任何时间。 HashMap可以包含 异质 键和值的对象。

HashMap有四个构造函数:

HashMap()HashMap(Map m)HashMap(int容量),HashMap(int容量,浮动fillRatio)

第一 构造函数创建HashMap的空对象。的 第二 构造函数使用Map m的元素初始化HashMap。的 第三 构造函数使用参数中提供的容量初始化HashMap。的 第四 构造函数初始化HashMap对象的容量以及填充率。

默认值 容量 HashMap的是 16,以及默认 填充率 HashMap的是 0.75.

TreeMap的定义

像HashMap一样, 树状图 也是Map类。 TreeMap扩展 抽象图 类和工具 Navigabel地图SortedMap。 TreeMap对象将地图元素存储在树结构中。用于存储地图的数据结构是 红黑树.

TreeMap以排序顺序存储键值对,这有助于快速检索元素。 TreeMap对象返回元素中的元素 已排序 (上升)订单。

TreeMap有四个构造函数:


TreeMap()TreeMap(Comparator <?super K> comp)TreeMap(Map <?扩展K,?扩展V> m)TreeMap(SortedMap sm)

第一 构造函数创建一个TreeMap空对象,该对象将按其键的自然顺序排序。的 第二 构造函数将创建一个空的树图,该树图将按 比较器cmp。的 第三 上面的构造函数将创建一个树图,该树图将使用 地图 。的 第四 构造函数将创建一个树图,该树图将使用的条目进行初始化 SortedMap 短信.

Treemap自身没有任何新方法,它使用接口NavigableMap和SortedMap以及AbstractMap类的方法。

  1. 这两个类都用于创建地图对象,但是HashMap和Treemap之间的基本区别是HashMap不会保持插入顺序,而Treemap会保持插入顺序。
  2. Hashmap用于存储地图元素的数据结构是哈希表,TreeMap用于存储地图元素的数据结构是红黑树。
  3. Hashmap和Treemap类都扩展了AbstractMap类,但是HashMap类实现了Map接口,而TreeMap实现了NavigableMap和SortedMap接口。
  4. 这两个值在任何时间都可以为Null,但是在HashMap中,键一次只能为Null,而键在Treemap中永远不能为空。
  5. HashMap的性能更快,它不会像TreeMap那样浪费时间对地图元素进行排序。因此,TreeMap的执行速度比HashMap慢。

结论:

仅当您需要排序形式的键值对时,才应使用TreeMap。由于排序包括性能成本。不同步的HashMap运行得更快。