Instantiate a map in a more concise manner in Java
有没有比这更短的方法?
1 2 3 4 5 6 7 8 9 10 11
| 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); |
在爪哇中使用数组,您可以这样做
而不是
1 2 3
| int[] temp = new int[2]
temp[0] = 1;
temp[1] = 2; |
我在找类似上面地图的东西。有可能吗?
一如既往地感谢您的帮助:)
- 你看过hashmap中的方法吗?……如果您使用Eclipse,ctrl+space将给出您的答案。
- 我不知道在hashmap api中要查找什么。你能给我指个方向吗?我不使用Eclipse@TheLostMind
- 嗯..如果你看看hashmap api,你将找不到任何能帮助你的方法..我会看看彼得的答案…必要时使用循环…
你可以试试这个,但你必须小心:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 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);
}
}; |
阅读此处有关双括号初始化的更多信息。
没有简单的方式使用Java,但如果你使用番石榴,你可以做到这一点:
1 2
| Map <String, Integer > values =
ImmutableMap. <String, Integer > builder (). put("A", 1). put("E", 1). put("D", 2). build(); |
参见:
不,没有直接的方法。
您需要按照建议初始化映射。
1 2 3 4 5 6 7 8 9 10 11
| 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。
这里也可以看到。
如何直接初始化哈希映射(以文字方式)?
另一种选择是使用番石榴。他们有办法解决这个问题。
如果你认为你知道键和值的组合,你可以这样做,但这是一种黑客行为:
1 2 3 4 5 6 7 8
| 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 ]);
} |
但您必须非常小心,最重要的是两个数组的长度应该相同。
- 请检查您的密码。它没有错误吗??
- @是的,我更正了,谢谢你指出