Java中的Hashmap是什么? 举例说明

已发表: 2021-07-02

HashMap 是 Java 中的一个集合类。 您可以使用它来存储键值对。 其性能取决于初始容量和负载系数。 HashMap 有多种方法可以让你使用它的哈希表数据结构。

在接下来的文章中,我们将探索 HashMap 是什么,并通过示例了解它的各种构造函数。

目录

什么是哈希映射?

HashMap 是一个基于 Map 的集合类。 我们用它来存储键值对。 您将 HashMap Java 表示为 HashMap<K, V>,其中 K 代表 Key,V 代表 Value。

HashMap 类似于 Hashtable 类。 两者的区别在于 HashMap 是不同步的,而 Hashtable 不是。 此外,与 Hashtable 不同,HashMap 允许空值和空键。

由于 HashMap 不是有序集合,因此它不会按照您插入的顺序返回键和值。 此外,HashMap 不会对存储的键和值进行排序。 如果要使用 HashMap 类及其方法,则必须导入 java.util.HashMap(或其超类)。

HashMap 为您提供了 Java 的 Map 接口的简单实现。 您可以使用另一种类型的索引(例如整数)来访问您通过 HashMap 存储的键值对。 请记住,如果您使用重复键,它将替换相关键的元素。 此外,您只能使用一个空键对象; 但是,可以有任意数量的空值。

HashMap 实现了 Cloneable、Serializable、Map<K, V> 接口。 它扩展了 AbstractMap<K, V> 类,其直接子类是 PrinterStateReasons 和 LinkedHashMap。

HashMap的特点

以下是 HashMap 的主要功能:

  • 它是 java.util.package 的一个组件。
  • 您可以使用重复值,但 HashMap 不允许重复键。 这意味着一个键不能有多个值,但多个键可以有一个值。
  • 您只能使用一次空键,但可以使用各种空值。
  • HashMap 不保证地图的顺序。 因此,它不能保证订单是否保持不变。
  • HashMap 与 Hashtable 非常相似,唯一的区别是 HashMap 是不同步的。
  • HashMap 实现了 Serializable 和 Cloneable 接口。

HashMap 构造函数

HashMap 中有四个构造函数:

1.HashMap()

HashMap() 是默认构造函数,它创建一个负载因子为 0.75 且初始容量为 16 的实例。

示例

// 展示 HashMap() 构造函数是如何工作的

导入java.io.*;

导入 java.util.*;

类 AddElementsToHashMap {

公共静态无效主(字符串参数 [])

{

// 你不必提及

// 泛型类型两次

HashMap<Integer, String> hm1 = new HashMap<>();

// 使用泛型初始化HashMap

HashMap<整数,字符串> hm2

= new HashMap<整数,字符串>();

// 使用 put 方法添加任意元素

hm1.put(1, “A”);

hm1.put(2, “B”);

hm1.put(3, “C”);

hm2.put(4, “D”);

hm2.put(5, “E”);

hm2.put(6, “F”);

System.out.println(“hm1的结果是:”

+ hm1);

System.out.println(“HashMap hm2的结果是:”

+ hm2);

}

}

输出

hm1 的结果是:{1=A, 2=B, 3=C}

hm2 的结果是:{4=D, 5=E, 6=F}

2. HashMap(int initialCapacity)

HashMap(int initialCapacity) 将创建一个负载为 0.75 和特定初始容量的实例。

示例

// 展示 HashMap(int initialCapacity) 构造函数是如何工作的

导入java.io.*;

导入 java.util.*;

类 AddElementsToHashMap {

公共静态无效主(字符串参数 [])

{

// 你不必提及

// 泛型类型两次

HashMap<Integer, String> hm1 = new HashMap<>(10);

// 使用泛型初始化HashMap

HashMap<整数,字符串> hm2

= new HashMap<整数,字符串>(2);

// 使用 put 方法添加任意元素

hm1.put(1, “A”);

hm1.put(2, “B”);

hm1.put(3, “C”);

hm2.put(4, “D”);

hm2.put(5, “E”);

hm2.put(6, “F”);

System.out.println(“hm1的结果是:”

+ hm1);

System.out.println(“HashMap hm2的结果是:”

+ hm2);

}

}

输出

hm1 的结果是:{1=A, 2=B, 3=C}

hm2 的结果是:{4=D, 5=E, 6=F}

3. HashMap(int initialCapacity, float loadFactor)

HashMap(int initialCapacity, float loadFactor) 生成具有特定负载因子和初始容量的实例。

示例

// 展示 HashMap(int initialCapacity, float loadFactor) 构造函数是如何工作的

导入java.io.*;

导入 java.util.*;

类 AddElementsToHashMap {

公共静态无效主(字符串参数 [])

{

// 你不必提及

// 泛型类型两次

HashMap<整数,字符串> hm1

= 新 HashMap<>(5, 0.75f);

// 使用泛型初始化HashMap

HashMap<整数,字符串> hm2

= new HashMap<整数,字符串>(3, 0.5f);

// 使用 put 方法添加元素

hm1.put(1, “A”);

hm1.put(2, “B”);

hm1.put(3, “C”);

hm2.put(4, “D”);

hm2.put(5, “E”);

hm2.put(6, “F”);

System.out.println(“hm1的结果是:”

+ hm1);

System.out.println(“HashMap hm2的结果是:”

+ hm2);

}

}

输出

hm1 的结果是:{1=A, 2=B, 3=C}

hm2 的结果是:{4=D, 5=E, 6=F}

4. HashMap(地图地图)

HashMap(Map map) 将创建一个与您指定的映射具有相同映射的实例。

示例

// 展示 HashMap(Map map) 构造函数是如何工作的

导入java.io.*;

导入 java.util.*;

类 AddElementsToHashMap {

公共静态无效主(字符串参数 [])

{

// 你不必提及

// 泛型类型两次

Map<Integer, String> hm1 = new HashMap<>();

// 使用泛型初始化HashMap

HashMap<整数,字符串> hm2

= new HashMap<整数,字符串>(hml);

// 使用 put 方法添加任意元素

hm1.put(1, “A”);

hm1.put(2, “B”);

hm1.put(3, “C”);

hm2.put(4, “D”);

hm2.put(5, “E”);

hm2.put(6, “F”);

System.out.println(“hm1的结果是:”

+ hm1);

System.out.println(“HashMap hm2的结果是:”

+ hm2);

}

}

输出

hm1 的结果是:{1=A, 2=B, 3=C}

hm2 的结果是:{4=D, 5=E, 6=F}

了解有关 Java 的更多信息

除了 HashMap,Java 还有很多类。 自己了解每个类的本质、它们的用途以及在 Java 中的集成是非常具有挑战性的。 进行此过程的最佳方法是参加计算机科学课程。

参加专业课程将使您通过结构化的课程掌握必要的技能和概念。 此外,此类课程通过视频、现场课程和在线讲座提供身临其境的学习体验,使您更容易理解理论基础知识。

您可以查看我们与 LJMU(英国利物浦约翰摩尔斯大学)和 IIIT-B(印度国际信息技术研究所)联合提供的计算机科学理学硕士课程。 该课程涵盖 500 多个小时的内容、10 多个现场讲座和 30 多个案例研究。

这个为期 19 个月的课程承诺提供高度价值导向的全球学习体验。 最大的附加值在于您可以与来自世界各地的同行建立联系和互动。 upGrad 拥有遍布 85 多个国家/地区的 40,000 多名付费全球学习者。 因此,您会接触到新文化、新观点和新观点,从而拓宽您的整体视野。 不仅如此,您还接受了来自 LJMU 和 IIIT-B 的专家导师的培训,他们提供专门和个性化的帮助来帮助您解决疑虑。

除了这些优势之外,该计划还将为您提供 360 度的职业帮助,包括行业指导、社交机会等等。

结论

在本文中,我们通过示例了解了 HashMap 是什么,它的不同构造函数,以及如何实现它们。 HashMap 在 Java 中有大量的应用程序——您可以使用 HashMap 来添加、删除它们,并根据需要管理它们。

您对 HashMap 指南有何看法? 在下面的评论部分分享它们。

提升自己并为未来做好准备

立即申请 LJMU 软件工程课程表