Java 中 HashMap 的文字声明

Literal declaration of HashMap in Java

JavaScript中,您可以一次性声明一个JSON对象的所有键值组合,如下所示...

var myJSON = {
    'key1' : 'value 1',
    'key2' : 'value 2',
    'key3' : 'value 3',
    'key4' : 'value 4',
    'key5' : 'value 5',
    'key6' : 'value 6'
};

我想知道我们是否可以在 Java 中为 HashMaps 做类似的事情。

HashMap<String, String> map = new HashMap<String, String>(
    "Key 1", "Value 1",
    "Key 2", "Value 2",
    "Key 3", "Value 3"
);

基本上,我需要将它作为一次性只读的东西作为代码其他部分的配置。我搜索并尝试了一些解决方案,但无法使它们起作用。还是我可以采用更好的方法?

Java 中没有映射文字的概念,但您可以轻松编写一个实用方法来实现类似的功能。例如,参见 this implementation。然后您可以初始化地图(使用静态导入):

Map<String, String> map = map("k1", "v1", "k2", "v2");

另一种方法是使用 "double brace initialisation" 语法,但它会创建一个匿名内部 class,这不一定是个好主意。

虽然{{(双括号)是反模式,但你可以这样写

HashMap<String, String> map = new HashMap<String, String>(){{
put("Key 1", "Value 1");
put("Key 2", "Value 2");
put("Key 3", "Value 3");    
}};

编辑:

如果您正在寻找放置元素的更好方法,请遍历 json 并将键值放入循环中。