首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在一条语句中一次向HashMap添加多个条目

在一条语句中一次向HashMap添加多个条目
EN

Stack Overflow用户
提问于 2011-11-25 02:05:11
回答 9查看 174.6K关注 0票数 163

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

代码语言:javascript
复制
  hashMap.put("One", new Integer(1)); // adding value into HashMap
  hashMap.put("Two", new Integer(2));      
  hashMap.put("Three", new Integer(3));

与目标C中的类似:

代码语言:javascript
复制
[NSDictionary dictionaryWithObjectsAndKeys:
@"w",[NSNumber numberWithInt:1],
@"K",[NSNumber numberWithInt:2],
@"e",[NSNumber numberWithInt:4],
@"z",[NSNumber numberWithInt:5],
@"l",[NSNumber numberWithInt:6],
nil] 

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

EN

回答 9

Stack Overflow用户

发布于 2014-05-15 04:22:27

你可以使用谷歌芭乐的ImmutableMap。只要您不关心稍后是否修改地图(使用此方法构造地图后,不能在地图上调用.put() ),就可以使用此方法:

代码语言:javascript
复制
import com.google.common.collect.ImmutableMap;

// For up to five entries, use .of()
Map<String, Integer> littleMap = ImmutableMap.of(
    "One", Integer.valueOf(1),
    "Two", Integer.valueOf(2),
    "Three", Integer.valueOf(3)
);

// For more than five entries, use .builder()
Map<String, Integer> bigMap = ImmutableMap.<String, Integer>builder()
    .put("One", Integer.valueOf(1))
    .put("Two", Integer.valueOf(2))
    .put("Three", Integer.valueOf(3))
    .put("Four", Integer.valueOf(4))
    .put("Five", Integer.valueOf(5))
    .put("Six", Integer.valueOf(6))
    .build();

另请参阅:http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/ImmutableMap.html

一个有点相关的问题:ImmutableMap.of() workaround for HashMap in Maps?

票数 72
EN

Stack Overflow用户

发布于 2016-04-26 22:05:47

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

代码语言:javascript
复制
Map<String, Integer> immutableMap = Map.of("One", 1, 
                                           "Two", 2, 
                                           "Three", 3);

这个映射是不可变的。如果您希望映射是可变的,则必须添加:

代码语言:javascript
复制
Map<String, Integer> hashMap = new HashMap<>(immutableMap);

如果您不能使用Java9,那么只能自己编写类似的助手方法,或者使用第三方库(如Guava)来为您添加该功能。

票数 69
EN

Stack Overflow用户

发布于 2017-09-21 20:01:55

Map还在Java 9中添加了工厂方法。对于最多10个条目,Map具有重载的构造函数,这些构造函数接受键和值对。例如,我们可以构建一个不同城市及其人口的地图(根据谷歌在2016年10月的数据),如下所示:

代码语言:javascript
复制
Map<String, Integer> cities = Map.of("Brussels", 1_139000, "Cardiff", 341_000);

Map的var-args用例有点困难,您需要同时拥有键和值,但在Java中,方法不能有两个var-args参数。因此,一般情况是通过采用Map.Entry<K, V>对象的var-args方法并添加构造它们的静态entry()方法来处理的。例如:

代码语言:javascript
复制
Map<String, Integer> cities = Map.ofEntries(
    entry("Brussels", 1139000), 
    entry("Cardiff", 341000)
);

Collection Factory Methods in Java 9

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8261075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档