拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何用Java创建一个空Map

如何用Java创建一个空Map

白鹭 - 2022-03-07 3210 0 2

一、概述

在本文中,我们将探讨在Java 中初始化空Map的不同可能方式。

我们将使用Java 8 和Java 9 来检查不同的方法。

2. 使用Java 集合

我们可以使用Java Collections 模块提供的emptyMap()方法创建一个空Map这将形成一个本质上可序列化的空Map该方法是在Java 1.5 中的Collections Library 中引入的。这将创建一个不可变的Map

Map<String, String> emptyMap = Collections.emptyMap();

注意:由于创建的Map本质上是不可变的,因此不允许用户添加任何条目或对Map执行任何类型的修改。这将在尝试添加或修改Map中的任何键值对时抛出java.lang.UnsupportedOperationException

我们还有两个方法支持空Map的创建和初始化。emptySortedMap()返回一个不可变类型的空SortedMap Sorted Map是一种在其键上提供进一步总排序的映射。此方法创建的Map本质上是可序列化的:

SortedMap<String, String> sortedMap = Collections.emptySortedMap();

Java Collections 提供的另一个方法是emptyNavigableMap(),它返回一个空的NavigableMap它具有与空排序Map相同的属性。唯一的区别是此方法返回一个可导航的MapNavigable Map是传统排序Map实现的扩展,它返回给定搜索目标的最接近匹配项。

NavigableMap<String, String> navigableMap = Collections.emptyNavigableMap();

以上所有方法都返回本质上不可变的Maps,我们将无法向这些Maps添加任何新条目。这会在强制尝试添加、删除或修改任何键值对时引发UnsupportedOperationException

3. 使用构造函数初始化Map

我们可以使用不同Map实现的构造函数来初始化Maps,即HashMap, LinkedHashMap, TreeMap所有这些初始化都会创建一个空Map,如果需要,我们可以在以后添加条目:

Map hashMap = new HashMap();
 Map linkedHashMap = new LinkedHashMap();
 Map treeMap = new TreeMap();

上面的Maps是可变的,可以接受新条目,这是使用这种方法的优点之一。在这种类型的初始化过程中创建的Maps是空的。

4. 使用Map.of()的Java 9 方式

Java 9 带来了许多新特性,例如Interface Private Methods, Anonymous classes, Platform Module System,等等。Map.of()是Java 9 版本中引入的工厂方法。此方法返回一个创建零映射的不可变Map此方法提供的接口属于Java Collections Framework。Map.of(key1, value1, key2, value2, …..)最多只能有10 个键值对。

为了初始化一个空的Map,我们不会在这个方法中传递任何键值对:

Map<String, String> emptyMapUsingJava9 = Map.of();

这个工厂方法产生一个不可变的Map,因此我们将无法添加、删除或修改任何键值对。初始化后尝试在Map中进行任何突变时会引发UnsupportedOperationException这。也不支持添加或删除键值对,将导致抛出上述异常。

注意:Java 9 中的Map.of()方法简化了具有所需键值对的不可变Maps的初始化。

5. 使用JavaMaps

在某些情况下,我们不需要不可变的Map我们可以使用Maps类初始化一个可变Map

Map<String, String> emptyMap = Maps.newHashMap();

这种类型的初始化创建了一个可变Map,即我们可以向这个Map添加条目。但是这个Map的基本初始化是空的,不包含任何条目。

我们还可以使用特定的键和值类型来初始化Map这将创建一个具有预定义元素类型的Map,如果不遵循则抛出异常:

Map genericEmptyMap = Maps.<String, Integer>newHashMap();

简而言之,这将创建一个空Map,其中键为字符串,值为整数。用于初始化的一对尖括号称为Diamond Syntax这将使用调用Maps类的构造函数的已定义类型参数创建一个Map

6.使用Guava

到目前为止,我们已经研究了使用核心Java 初始化空Map的不同方法。现在让我们继续检查如何使用Guava 库初始化Map

Map<String, String> articles = ImmutableMap.of();

上述方法将使用Guava 库创建一个不可变的空Map我们还可以使用以下语法在guava 中创建可变Map

Map<String, String> emptyMapUsingGuava = Maps.newHashMap(ImmutableMap.of());

总之,上述方法在Java 中创建了一个空Map我们可以向这个Map添加条目,因为它本质上是可变的。

ImmutableMap.of()还重载了用于创建带有条目的Maps的方法版本。由于我们正在创建一个空Map,我们不需要在方法括号内传递任何参数来使用重载方法。

7. 结论

在本文中,我们探索了初始化Empty Map的不同方法。我们可以看到,自Java 9 以来,这个领域有了巨大的进步。我们有了新的工厂方法来创建和初始化Maps


标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *