开发手册 欢迎您!
软件开发者资料库

Java HashMap对象创建时初始化的几种方法

本文主要介绍Java中,创建HashMap对象,初始化的几种方法,以及相关的示例代码。

1、使用Collections.singletonMap()初始化

Collections.singletonMap()可以为HashMap初始一个key和value。

import java.util.*; public class Main {  public static void main(String[] args) {    Map m1 = Collections.singletonMap("key1", "value1");    System.out.println(m1);    System.exit(0); //success  }}

2、Map.of()或Map.ofEntries()

Java 9及以上版本,可以使用Map.of()或Map.ofEntries()对HashMap对象进行初始化。

1)最多适用于10个元素

import java.util.*; public class Main {  public static void main(String[] args) {    Map m1 = Map.of(        "C", "wonhero",        "Java", "code"    );    System.out.println(m1);    System.exit(0); //success  }}

2)适用于任何数量的元素

import java.util.*; import static java.util.Map.entry; public class Main {  public static void main(String[] args) {   Map m2 = Map.ofEntries(       entry("C", "wonhero"),       entry("Java", "code")   );    System.out.println(m2);    System.exit(0); //success  }}

相关文档https://docs.oracle.com/javase/9/docs/api/java/util/Map.html

3、使用初始化器

Java 8及以上版本,可以在匿名子类中使用初始化器来实现。

import java.util.*;public class Main {  public static void main(String[] args) {    Map m1 = new HashMap() {{        put("C", "wonhero");        put("Java", "code");    }};    System.out.println(m1);    System.exit(0); //success  }}

4、 ImmutableMap.of()

可以使用ImmutableMap.of()指定初始化的key和value

相关文档https://github.com/google/guava/blob/master/guava/src/com/google/common/collect/ImmutableMap.java

Map left = ImmutableMap.of("C", 1, "Java", 2, "Python", 3);

5、Stream.of()

Java 8中,可以使用Streams/collector来初始化。

import java.util.*;import static java.util.stream.Collectors.toMap;import java.util.AbstractMap.SimpleEntry;import java.util.stream.Stream; public class Main {  public static void main(String[] args) {    Map m1 = Stream.of(         new SimpleEntry<>("key1", "value1"),         new SimpleEntry<>("key2", "value2"),         new SimpleEntry<>("key3", "value3"))        .collect(toMap(SimpleEntry::getKey, SimpleEntry::getValue));     System.out.println(m1);    System.exit(0); //success  }}