Java中HashMap和TreeMap之间的区别
内容
HashMap和TreeMap是Map类,均实现Map接口。 Map是一个存储键值对的对象,其中每个键都是唯一的,但可能存在重复的值。 HashMap类使用哈希表作为数据结构。 TreeMap使用红黑树作为数据结构。 HashMap和Treemap之间的主要区别在于 哈希图 不保留插入顺序,而 树状图 做。
因此,让我们借助下面显示的比较表开始讨论HashMap和TreeMap之间的区别。
- 比较表
- 定义
- 关键差异
- 结论
比较表
比较基础 | 哈希图 | 树状图 |
---|---|---|
基本的 | 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 的 第一 构造函数创建一个TreeMap空对象,该对象将按其键的自然顺序排序。的 第二 构造函数将创建一个空的树图,该树图将按 比较器cmp。的 第三 上面的构造函数将创建一个树图,该树图将使用 地图 米。的 第四 构造函数将创建一个树图,该树图将使用的条目进行初始化 SortedMap 短信. Treemap自身没有任何新方法,它使用接口NavigableMap和SortedMap以及AbstractMap类的方法。 仅当您需要排序形式的键值对时,才应使用TreeMap。由于排序包括性能成本。不同步的HashMap运行得更快。
结论: