📜  java 用一行中的值初始化映射 - Java (1)

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

初始化映射的方式(Java)

在Java中,我们可以使用一行代码来初始化一个映射(Map),也被称为关联数组或字典。映射是一种键值对的集合,其中每个键都是唯一的,并且与一个值相关联。

以下是几种初始化映射的方式和示例代码:

1. 使用静态初始化块
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<String, Integer>() {{
            put("A", 1);
            put("B", 2);
            put("C", 3);
        }};
        System.out.println(map);
    }
}

这个方式使用了双括号初始化,双括号初始化在Java中被称为匿名内部类的语法糖。这种方式将使用大括号创建一个匿名内部类,并在内部类中使用put方法来添加键值对。

运行以上代码,输出结果为:

{A=1, B=2, C=3}
2. 使用Map.of方法

Java 9引入了一个新的静态方法of,用于在一行代码中创建一个不可变的映射。

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> map = Map.of("A", 1, "B", 2, "C", 3);
        System.out.println(map);
    }
}

这种方式更加简洁,但是注意这个方法只能创建不可变的映射。运行以上代码,输出结果为:

{A=1, B=2, C=3}
3. 使用java.util.stream.Collectors

Java 8引入了Stream API,我们可以使用Stream和Collectors类创建映射。

import java.util.*;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> map = Arrays.stream(new Object[][]{
                {"A", 1},
                {"B", 2},
                {"C", 3}
        }).collect(Collectors.toMap(data -> (String) data[0], data -> (Integer) data[1]));
        System.out.println(map);
    }
}

这个例子将一个二维对象数组转换为Stream流,然后使用Collectors.toMap方法将流中的元素转换为映射。

运行以上代码,输出结果为:

{A=1, B=2, C=3}

这是几种在Java中用一行代码初始化映射的方式。根据你的需求,选择适合的方式进行映射的初始化。