首页 > 解决方案 > 如何对 Map 的 Map 使用双括号初始化

问题描述

我确实知道双括号初始化有其隐藏的成本,仍然有一种可能的方法来初始化Map<String,Map<String,String>>().

我尝试了什么:

Map<String, Map<String, String>> defaultSourceCode = new HashMap<String, Map<String, String>>(){
            {"a",new HashMap<String, String>(){{"c","d"}}}
        };

我知道这是一种不好的做法,但至于实验我正在尝试。

参考和动机: Arrays.asList 也适用于地图?

标签: javaalgorithmdictionaryjava-8jvm

解决方案


您可以使用Map.of()from java9 返回不可变映射:

Map<String, Map<String, String>> map = Map.of("a", Map.of("c", "d"));

或者Map.ofEntries

Map<String, Map<String, String>> map1 = Map.ofEntries(
        Map.entry("a", Map.of("c", "d"))
);

推荐阅读