Vis*_*tna 5 java java-8 java-9
我确实知道,双括号初始化有其自身的隐藏成本,但仍然有一种可能的初始化方法Map<String,Map<String,String>>()。
我试过的
Map<String, Map<String, String>> defaultSourceCode = new HashMap<String, Map<String, String>>(){
{"a",new HashMap<String, String>(){{"c","d"}}}
};
Run Code Online (Sandbox Code Playgroud)
我知道这是一个不好的做法,但至于实验,我正在尝试。
参考和动机: Arrays.asList还可以用于地图吗?
您可以使用Map.of()从java9返回不可变映射的方法:
Map<String, Map<String, String>> map = Map.of("a", Map.of("c", "d"));
Run Code Online (Sandbox Code Playgroud)
Map<String, Map<String, String>> map1 = Map.ofEntries(
Map.entry("a", Map.of("c", "d"))
);
Run Code Online (Sandbox Code Playgroud)
几乎一切都很好,您只需要在双括号中使用方法调用即可:
Map<String, Map<String, String>> defaultSourceCode = new HashMap<String, Map<String, String>>(){
{put("a",new HashMap<String, String>(){{put("c","d");}});}
};
Run Code Online (Sandbox Code Playgroud)
但是这个答案描述了为什么不应该这样做。