我需要初始化一个常量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]
在看了这么多之后,我还没有找到任何例子来说明如何做到这一点。
发布于 2014-05-15 04:22:27
你可以使用谷歌芭乐的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
发布于 2016-04-26 22:05:47
从Java9开始,可以使用Map.of(...)
,如下所示:
Map<String, Integer> immutableMap = Map.of("One", 1,
"Two", 2,
"Three", 3);
这个映射是不可变的。如果您希望映射是可变的,则必须添加:
Map<String, Integer> hashMap = new HashMap<>(immutableMap);
如果您不能使用Java9,那么只能自己编写类似的助手方法,或者使用第三方库(如Guava)来为您添加该功能。
发布于 2017-09-21 20:01:55
Map还在Java 9中添加了工厂方法。对于最多10个条目,Map具有重载的构造函数,这些构造函数接受键和值对。例如,我们可以构建一个不同城市及其人口的地图(根据谷歌在2016年10月的数据),如下所示:
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()
方法来处理的。例如:
Map<String, Integer> cities = Map.ofEntries(
entry("Brussels", 1139000),
entry("Cardiff", 341000)
);
https://stackoverflow.com/questions/8261075
复制相似问题