📜  用值初始化 hashmap - Java (1)

📅  最后修改于: 2023-12-03 14:56:22.963000             🧑  作者: Mango

用值初始化 HashMap - Java

在 Java 中,HashMap 是一个常用的类,用于将键值对关联起来。通常,我们可以使用 put() 方法逐个添加键值对到一个 HashMap 中。如果我们有一个初始值集合,该怎么初始化一个 HashMap 呢?本文介绍两种方法。

方法一

第一种方法是手写代码一一添加键值对。例如:

HashMap<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);

这种方法简单直接,但是对于大规模的初始值集合并不适用。

方法二

第二种方法是使用 Java 8 中新增的 Stream API。我们可以使用 Stream.of() 方法将一个 Object 数组转化为一个 Stream,然后使用 collect() 方法将该 Stream 转化为 HashMap。例如:

HashMap<String, Integer> map = Stream.of(
        new AbstractMap.SimpleEntry<>("a", 1),
        new AbstractMap.SimpleEntry<>("b", 2),
        new AbstractMap.SimpleEntry<>("c", 3)
).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> b, HashMap::new));

其中,AbstractMap.SimpleEntry 是一个简单的键值对实现类。上述代码实现了将一个 Object 数组 {("a",1), ("b",2), ("c",3)} 转化为一个 HashMap。

具体来说, collect() 方法接受四个参数:

  • 第一个参数将 Stream 的元素类型 Object 转化为 Map.Entry,一个键值对;
  • 第二个参数将 Map.Entry 的键属性作为 HashMap 的键;
  • 第三个参数将 Map.Entry 的值属性作为 HashMap 的值;
  • 第四个参数创建一个新的 HashMap 来存放结果。

这种方法可以在代码简洁的同时处理大规模的初始值集合。而且,由于 collect() 方法是一个终止操作,因此我们可以在 Stream API 中加入其他操作,如 filter() 或 map()。

总之,有了以上两种方法,我们可以轻易地将初始值集合转化为 HashMap,并方便地进行后续操作。