Java中的Hashmap是什么? 举例说明
已发表: 2021-07-02HashMap 是 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 指南有何看法? 在下面的评论部分分享它们。