有没有更短的方法呢?
Map<String, Integer> values = new HashMap<String, Integer>();
values.put("A", 1);
values.put("E", 1);
values.put("D", 2);
values.put("R", 2);
values.put("B", 3);
values.put("M", 3);
values.put("V", 4);
values.put("Y", 4);
values.put("J", 8);
values.put("X", 8);
使用Java中的数组,您可以执行此操作,例如
int[] temp = {1,2};
而不是
int[] temp = new int[2]
temp[0] = 1;
temp[1] = 2;
我期待与上面的地图类似的东西。 这可能吗?
感谢您的帮助,一如既往:)
答案 0 :(得分:4)
你可以试试这个,但你必须要小心:
HashMap<String, Integer> values = new HashMap<String, Integer>()
{
{
put("A", 1);
put("E", 1);
put("D", 2);
put("R", 2);
put("B", 3);
put("M", 3);
put("V", 4);
put("Y", 4);
put("J", 8);
put("X", 8);
}
};
答案 1 :(得分:3)
没有更简单的方法只使用Java,但是如果你使用Guava,你可以这样做:
Map<String, Integer> values =
ImmutableMap.<String, Integer> builder().put("A", 1).put("E", 1).put("D", 2).build();
另见:
答案 2 :(得分:2)
不,没有直接的方法可以做到这一点。
您需要按照建议初始化地图。
Map<String, Integer> values = new HashMap<String, Integer>();
values.put("A", 1);
values.put("E", 1);
values.put("D", 2);
values.put("R", 2);
values.put("B", 3);
values.put("M", 3);
values.put("V", 4);
values.put("Y", 4);
values.put("J", 8);
values.put("X", 8);
如果这些值中有任何模式,您可以将其简化为使用循环。
另一种方法是使用HashMapBuilder。
另见此处。
How to directly initialize a HashMap (in a literal way)?
另一种方法是使用Guava。他们有一个方法。
答案 3 :(得分:1)
如果你认为你知道键和值的组合,你可以这样做,但它是一种黑客攻击:
String[] keys = {"A", "B", "C"};
int[] values = {1, 2, 3};
Map<String, Integer> myMap = new HashMap<String, Integer>();
for(int i = 0; i < keys.length; i++){
myMap.put(keys[i], values[i]);
}
但是你必须非常小心,最重要的是你的阵列应该是相同的长度。