如何在Java中以字面量方式初始化HashMap?
大家好!我刚开始学习Java,遇到了一个问题。在Python中,我可以直接以字面量方式声明字典,例如:
```python
my_dict = {"key1": "value1", "key2": "value2"}
```
但在Java中,当我尝试对HashMap做类似操作时,却行不通。我不得不编写这样冗长的代码:
```java
HashMap map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
```
这非常不方便,尤其是当需要初始化一个包含已知值的小型map时。我听说过某种“双花括号初始化”,但读到说这是一种不好的实践。Java中是否有像Python那样以字面量方式声明HashMap的方法?即能在创建对象时直接传入所有键值对?感谢提供代码示例和解释。我使用的是Java 11,但也想了解更新的特性。
<<>>
最佳方式:静态工厂方法(Java 9+)
从Java 9开始,Map接口提供了静态工厂方法,可以简洁地创建不可变的map。例如:
Map map = Map.of(
"key1", "value1",
"key2", "value2",
"key3", "value3"
);
如果需要可变map,可以将其传递给HashMap的构造函数:
HashMap map = new HashMap<>(Map.of(
"key1", "value1",
"key2", "value2",
"key3", "value3"
));