我确实理解双括号初始化有其自己的隐藏成本,仍有可能的方法来初始化Map<String,Map<String,String>>()
。
我尝试了什么:
Map<String, Map<String, String>> defaultSourceCode = new HashMap<String, Map<String, String>>(){
{"a",new HashMap<String, String>(){{"c","d"}}}
};
我知道这是一个不好的做法,但实验我正在尝试。
几乎一切都很好,你只需要在双括号中使用方法调用:
Map<String, Map<String, String>> defaultSourceCode = new HashMap<String, Map<String, String>>(){
{put("a",new HashMap<String, String>(){{put("c","d");}});}
};
但this answer描述,为什么你不应该这样做。
您可以使用java9中返回不可变映射的Map.of()
:
Map<String, Map<String, String>> map = Map.of("a", Map.of("c", "d"));
Map<String, Map<String, String>> map1 = Map.ofEntries(
Map.entry("a", Map.of("c", "d"))
);