在一条语句中一次将多个条目添加到 HashMap

新手上路,请多包涵

我需要初始化一个常量 HashMap 并希望在一行语句中完成。避免这样的事情:

   hashMap.put("One", new Integer(1)); // adding value into HashMap
  hashMap.put("Two", new Integer(2));
  hashMap.put("Three", new Integer(3));

与目标 C 中的类似:

 [NSDictionary dictionaryWithObjectsAndKeys:
@"w",[NSNumber numberWithInt:1],
@"K",[NSNumber numberWithInt:2],
@"e",[NSNumber numberWithInt:4],
@"z",[NSNumber numberWithInt:5],
@"l",[NSNumber numberWithInt:6],
nil]

在看了这么多之后,我还没有找到任何例子来说明如何做到这一点。

原文由 user387184 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

您可以使用 双括号初始化,如下所示:

 Map<String, Integer> hashMap = new HashMap<String, Integer>()
{{
     put("One", 1);
     put("Two", 2);
     put("Three", 3);
}};

作为一条警告,请参阅 Java 的线程效率“Double Brace Initialization” 以了解它可能具有的性能影响。

原文由 Eng.Fouad 发布,翻译遵循 CC BY-SA 4.0 许可协议

从 Java 9 开始,可以使用 Map.of(...) ,如下所示:

 Map<String, Integer> immutableMap = Map.of("One", 1,
                                           "Two", 2,
                                           "Three", 3);

这张地图是不可变的。如果您希望地图可变,则必须添加:

 Map<String, Integer> hashMap = new HashMap<>(immutableMap);

如果您不能使用 Java 9,您将不得不自己编写类似的辅助方法或使用第三方库(如 Guava )为您添加该功能。

原文由 Timo Türschmann 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题