我有以下代码:
Map<String, Map<Double, String>> map = new HashMap<>();
Map<Double,String> Amap = new HashMap<>();
map.put(getValuesTypes.FUT(), HERE);
我没有首先创建地图并将其放在&#34; HERE&#34;,而是寻找像List
Arrays.asList(...)
"Here" ?.asMap({1.0,"A"}, {2.0,"B"})
那样的功能。
所以我可以进入{{1}}
答案 0 :(得分:10)
您可以像这样初始化HashMap
。
new HashMap<Double, String>() {
{
put(1.0, "ValA");
put(2.0, "ValB");
}
};
答案 1 :(得分:5)
Map<Double, String> map = ImmutableMap.of(1.0, "A", 2.0, "B");
答案 2 :(得分:4)
Guava的ImmutableMap.of(..)可以帮助实现这个目标:
ImmutableMap.of(1, "a");
JDK中的只有Collections.singletonMap(..),但这只为您提供了唯一一对的地图。
discussion中有一个guava project包含Maps.asMap(Object... varArgs)
,它被停止了。因此,ImmutableMap.of(...)是要走的路。
自JDK 9起编辑
在JDK 9中增加了新的方法,它们做同样的事情: Map.of(K,V)
答案 3 :(得分:1)
没有文字以这种方式初始化地图。但是你可以使用现场生成的匿名类:
map.put(getValuesTypes.FUT(), new HashMap<Double, String>() {{
put(1.0, "A");
put(2.0, "B");
}});
虽然不推荐。我建议使用Guava&#39; ImmutableMap
:
map.put(getValuesTypes.FUT(), ImmutableMap.<Double, String>of(1.0, "A", 2.0, "B"));
如果对数大于5
,您应该使用他们的builder
:
map.put(getValuesTypes.FUT(),
ImmutableMap.<Double, String>builder().put(1.0, "A")/* 5+ puts */.build());
答案 4 :(得分:0)
您只能使用匿名类初始化新地图。即。
new HashMap<K, V>() {{
put(key, value);
put(key, value);
}};