我对HashMap
创作有疑问。是否有一种简单而快速的HashMap
创作方式?也许,连接两个数组{1, 2, ...}
和{"picture/one.png", "picture/two.png", ...}
。
我对一个简洁的解决方案感兴趣。最好的做法,可以说。
每个指导或提示都非常有用。感谢。
编辑:是的,我知道如何发起HashMap
。我看着javadoc(甚至没有一次)。
对不起我的问题的错误解释,也许不是很清楚。再一次,我对最佳实践解决方案感兴趣。如果最佳实践解决方案是for循环,那就是它。如果还有其他选择,请显示。
答案 0 :(得分:5)
是的,有可能:
public static <K,V> Map<K,V> mapFromArrays(K[] keys,V[]values){
HashMap<K, V> result=new HashMap<K, V>();
for(int i=0;i<keys.length;i++){
result.put(keys[i], values[i]);
}
return result;
}
假设键和值具有相同的长度。
您也可以在静态初始化程序中使用此函数,如下所示:
private static Integer[] keys=new Integer[]{1,2,3};
private static String[] values=new String[]{"first","second","third"};
private static Map<Integer,String> myMap;
{
myMap=mapFromArrays(keys, values);
}
答案 1 :(得分:3)
简短的回答是否定的。但是,您可以在静态实用程序函数中使用varargs 关闭。
没有错误检查,也没有泛型:
public static Map kvPairsToMap(Object...args) {
// TODO check that args has an even length
Map map = new HashMap();
for (int i=0; i<args.length; i+=2) {
map.put(args[i], args[i+1]);
}
return map;
}
用法是
Map dic = kvPairsToMap(1,"picture/one.png", 2,"picture/two.png", ...);
答案 2 :(得分:2)
在这种情况下有一个使用匿名子类创建 HashMap 的好方法,请参见下面的示例:
Map<Integer, String> map = new HashMap<Integer, String>() {{
put(1,"picture/one.png");
put(2,"picture/two.png");
put(3,"picture/three.png");
}};
答案 3 :(得分:1)
这是一种在键和值为字符串时使用变量声明初始化地图的方法。
首先声明一个二维数组的字符串。使用花括号表示法初始化数组,例如
System.out.println(response.getBody());
HTTP Status 403 - Expected CSRF token not found. Has your session expired?
然后声明并初始化地图:
final static String [][] animalEatsArray = {{"mouse", "cheese"}, {"dog", "bone"}};
你需要一个像这样的方法:
final static Map animalEatsMap = buildMapFromStringArray(animalEatsArray );