Java HashMap和TreeMap的区别

Java HashMap和TreeMap的区别

HashMap和TreeMap都被认为是Map类,因为它们都执行Map接口的职责。Map是一个存储键值对的对象,其中每个键只有一个实例,但值可以有多个实例。哈希表是HashMap类使用的一种数据结构,而红黑树是TreeMap使用的一种数据存储形式。

什么是HashMap

HashMap使用一种称为哈希表的数据结构来存储键值对。在将键值对插入数据库时,使用键的哈希码。因此,地图中的每个键都需要与其他键不同,以便用于检索值。

由于HashMap不保留插入顺序,因此HashMap对象不会按照将它们添加到映射中的顺序返回元素。另一方面,不保证在任何时候返回元素的顺序是一致的。

虽然键只能为NULL一次,但值可以有任意数量的此值的实例。可以将不同类型的对象用作键和值存储在HashMap中。

如何创建一个HashMap

您可以使用以下四种方法之一来构建HashMap:

HashMap()
HashMap(Map m)
HashMap(int capacity),
HashMap(int capacity, float fillRatio)
  • HashMap的初始构造方法创建了一个默认情况下为空的对象。

  • 第二个构造方法使用映射“m”的组件来初始化HashMap。

  • 当HashMap被初始化时,第三个构造方法将容量设置为参数中指定的值。

  • 第四个构造方法将HashMap对象的容量和填充比率都设置为默认值。

  • HashMap的默认大小为16,其默认的填充比率为0.75。如果需要,这两个值都可以更改。

例如:

import java.util.HashMap;
   public class HashMapSample {
      public static void main(String[] args) {
      HashMap map = new HashMap();

      map.put("Today is","Monday");
      map.put("Tomorrow is","Tuesday");
      System.out.println(map);
   }
}

它将产生以下 输出 -

Today is = Monday
Tomorrow is =Tuesday

什么是 TreeMap

TreeMap 是另一种 Map 类型,就像 HashMap 一样。TreeMap 类是 AbstractMap 类的扩展,并实现了 NavigabelMap 和 SortedMap 接口。

Map 的片段以树状格式保存在 TreeMap 对象中。红黑树是用于存储 Map 的数据结构。

键值对按照在 TreeMap 中排序的顺序存储,这样可以更快地检索元素。TreeMap 对象按照它们被排序的顺序返回元素(升序)。

如何构造一个 TreeMap

有四种不同的构造 TreeMap 的方式 –

TreeMap( )
TreeMap(Comparator<? super K> comp)
TreeMap(Map<? extends K, ? extends V> m)
TreeMap(SortedMap<K, ? extends V> sm)
  • 初始构造函数将生成一个空的TreeMap对象,并以最合理的方式排列其键。

  • 第二个构造函数将生成一个空的树图,然后使用“comp”比较器进行比较和排序。

  • 上述第三个构造函数将负责创建一个TreeMap,然后使用Map“m”中的条目进行初始化。

  • 第四个构造函数将生成一个TreeMap,并使用作为参数传递的SortedMap对象的条目进行初始化。

TreeMap不包含任何额外的方法,而是依赖于提供的NavigableMap和SortedMap接口以及AbstractMap类中的方法。

示例 –

import java.util.TreeMap;
public class TreeMapSample {
   public static void main(String[] args) {
      TreeMap<String,String> map= new TreeMap<String,String>();
      map.put("Today is", "Monday");
      map.put("Tomorrow is", "Tuesday");
      System.out.println(map);
   }
}

HashMap和TreeMap的区别

以下表格突出了HashMap和TreeMap之间的主要区别-

比较基础 HashMap TreeMap
基本 HashMap不会跟踪插入顺序。 TreeMap保留插入顺序。
接口实现 HashMap实现了Map、Cloneable和Serializable接口。 TreeMap除了实现NavigableMap接口外,还可以进行克隆和序列化。
数据结构 哈希表是HashMap底层的数据结构基础。 红黑树是TreeMap构建的基础数据结构。
空键和值 在HashMap中可以使用一次空键,空值可以使用任意次数。 TreeMap不允许使用空键,但可以使用任意次数的空值。
继承和实现 HashMap类是AbstractMap类的扩展,并实现了Map接口。 TreeMap类扩展了AbstractMap基类,并分别实现了SortedMap和NavigableMap接口。
性能 HashMap处理操作速度更快。 与HashMap相比,TreeMap的操作速度较慢。
元素顺序 HashMap不跟踪顺序。 元素按照自然顺序(升序)排列。
同质/异质 HashMap支持异质元素,因为它不进行键排序。 由于排序,TreeMap允许同质值作为键。
用途 当我们不希望键值对按照排序顺序排列时,应使用HashMap数据结构。 当我们需要键值对按照排序(升序)顺序排列时,应使用TreeMap。

结论

只有在需要排序的键值对列表的情况下才应该使用TreeMap。排序会导致性能上的损耗。HashMap的操作速度更快,因为它没有同步机制。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程