用 Java 初始化 HashMap

Rupam Yadav 2023年1月30日 2022年4月26日
  1. 在 Java 中使用传统方式初始化 HashMap
  2. 在 Java 中通过创建匿名子类来初始化 HashMap
  3. 在 Java 中使用 Collections.singletonMap() 初始化具有单个键值对的 HashMap
  4. 在 Java 8 中使用 Collectors.toMap() 初始化 HashMap
  5. 在 Java 9 中使用 Map.of() 初始化 HashMap
用 Java 初始化 HashMap

HashMap 是将数据存储在键值对中的一种非常方便的方法。初始化 HashMap 有多种方法,每次更新时,Java 都可以更轻松地实现它。

在 Java 中使用传统方式初始化 HashMap

下面的程序给出了初始化 HashMap 的最常见和标准的方法。

我们在示例中声明了一个 Map,并将键值数据类型作为 String。我们使用 new HashMap() 初始化 HashMap

这种类型的初始化会生成一个可变类型的 HasMap,我们使用 put() 方法在其中插入一些数据,其中第一个参数是 key。第二个参数是

在最后一条语句中,我们打印整个 HashMap

import java.util.HashMap;
import java.util.Map;

public class Main {

    public static void main(String[] args) {

        Map<String, String> hashMap = new HashMap<>();
        hashMap.put("key1", "String1");
        hashMap.put("key2", "String2");
        hashMap.put("key3", "String3");

        System.out.println(hashMap);

    }

}

输出:

{key1=String1, key2=String2, key3=String3}

在 Java 中通过创建匿名子类来初始化 HashMap

初始化 HashMap 的另一种方法是使用双括号和 put() 方法插入数据。

我们首先声明然后使用以下代码中的数据初始化一个 HashMapmapExample 是可变的,我们可以在初始化后放入另一个数据。

不推荐这种初始化地图的方式,因为它会创建一个带有匿名类的新子类,而额外的类并不是一种非常有效的方式。

import java.util.HashMap;
import java.util.Map;

public class Main {


    public static void main(String[] args) {
        Map<String, String> mapExample = new HashMap<>() {{
            put("Key01", "String01");
            put("Key02", "String02");
            put("Key03", "String03");
        }};

        mapExample.put("Key04", "String04");
        System.out.println(mapExample);

    }

}

输出:

{Key01=String01, Key02=String02, Key03=String03, Key04=String04}

在 Java 中使用 Collections.singletonMap() 初始化具有单个键值对的 HashMap

这是一种通过仅在其中插入单个键值对数据来初始化 HashMap 的方法。我们使用 Collections 类的静态方法 singletonMap(),它返回一个只有一个条目的不可变映射。

在下面的示例中,我们调用 Collections.singletonMap() 函数并传递键值数据。Map 是不可变的,因此我们无法在初始化后修改或插入更多数据。

import java.util.Collections;
import java.util.Map;

public class Main {
    public static void main(String[] args) {

        Map<String, String> mapExample = Collections.singletonMap("key1", "value1");
        System.out.println(mapExample);

    }

}

输出:

{key1=value1}

在 Java 8 中使用 Collectors.toMap() 初始化 HashMap

在 Java 8 更新中,引入了 Stream API,这是一系列元素,其中包含对 Java 中各种类型(如集合和数组)执行操作的方法。

下面的程序显示了 Stream 的使用。我们使用 Stream API 调用 of() 方法,该方法按顺序返回 Stream 中的单个元素。

of() 方法中,我们传递要返回的元素的对象类型。我们指定 new String[][],它是 String 类型的数组,然后在数组中插入键值对。

为了将 String 数组元素的顺序流转换为 Map,我们调用 collect() 方法,在这个函数中,我们调用 Collectors.toMap() 将传递的数据映射到 Map

Collectors.toMap() 方法中,我们将数组的第一个元素作为键,将第二个元素作为值。毕竟,stream 返回一个我们存储在 mapExample 中的 Map

import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {
        Map<String, String> mapExample = Stream.of(new String[][]{
                {"key1", "21"},
                {"key2", "22"},
                {"key3", "33"}
        }).collect(Collectors.toMap(collectorData -> collectorData[0], collectorData -> collectorData[1]));

        System.out.println(mapExample);

    }

}

输出:

{key1=21, key2=22, key3=33}

在 Java 9 中使用 Map.of() 初始化 HashMap

另一种初始化 HashMap 的方法是使用 Java 9 版本的 Map.of() 函数。Map.of() 映射成对传递的键和值,然后它返回一个不可变的 HashMap

请注意,Map.of() 最多只能占用十个条目。

import java.util.Map;

public class Main {


    public static void main(String[] args) {
        Map<String, String> mapExample = Map.of("key1", "Value1", "key2", "Value2", "key", "Value3");
        
        System.out.println(mapExample);

    }

}

输出:

{key=Value3, key1=Value1, key2=Value2}
Author: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

相关文章 - Java HashMap