【问题标题】:How to create a map with mappings in single statement [duplicate]如何在单个语句中创建具有映射的映射 [重复]
【发布时间】:2019-12-14 07:06:42
【问题描述】:

我需要在 java 8 中创建一个空映射,然后一次性将一些键和值放入其中。这可能吗?我已经包含了我想要做的代码。

Map<String, String> data = new HashMap<String, String>();
data.put("candy" "chocolate", "shoes", "sneakers", "car", "prius");

【问题讨论】:

  • 它很懒惰且可读性较差。不要那样做。

标签: java dictionary


【解决方案1】:

对于 Java 8,您可以这样做。

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

如果是 Google Guava,你可以这样做。

ImmutableMap.of("Key-1", "Value-1", "Key-2", "Value-2");

【讨论】:

  • 还有,请参阅here,了解为什么不应该使用所谓的“双括号初始化”。
  • 哇,非常感谢您提供的信息。我真的很喜欢。
  • 那不是 hashmap,而是 hashmap 的匿名内部类子类,很可能不再可序列化。
  • 使用你的第一个例子是个坏主意,因为它创建了一个匿名类,可以保存对封闭实例的引用,它可能导致意外和意外的内存泄漏。
  • 谢谢先生指出这个概念,我知道了。
【解决方案2】:

作为替代方案,如果您无法访问 Java9+ 并且可以使用外部库,则可以使用 apache MapUtils putAll,找到的文档 here

public static Map putAll(Map map, 对象[] 数组)

“将指定数组中的所有键和值放入映射中。”

来自文档的示例:

 Map colorMap = MapUtils.putAll(new HashMap(), new String[] {
 "RED", "#FF0000",
 "GREEN", "#00FF00",
 "BLUE", "#0000FF"
 });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    • 2023-04-08
    • 2015-09-12
    相关资源
    最近更新 更多