Avatar ·

如何在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"
));