在一个语句中一次向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] 

我还没有找到任何示例显示如何做到这一点看了这么多。


你可以这样做:

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

您可以使用Google Guava的ImmutableMap。 只要您稍后不关心修改地图(只有在使用此方法构建地图后才能在地图上调用.put()),此操作才起作用:

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

一个有点相关的问题:地图中的HashMap的ImmutableMap.of()解决方法?


在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)来为你添加这个功能。

链接地址: http://www.djcxy.com/p/82399.html

上一篇: adding multiple entries to a HashMap at once in one statement

下一篇: What is Double Brace initialization in Java?