java中的HashMap初始化

时间:2014-11-18 16:54:33

标签: java hashmap

我对HashMap创作有疑问。是否有一种简单而快速的HashMap创作方式?也许,连接两个数组{1, 2, ...}{"picture/one.png", "picture/two.png", ...}。 我对一个简洁的解决方案感兴趣。最好的做法,可以说。

每个指导或提示都非常有用。感谢。

编辑:是的,我知道如何发起HashMap。我看着javadoc(甚至没有一次)。 对不起我的问题的错误解释,也许不是很清楚。再一次,我对最佳实践解决方案感兴趣。如果最佳实践解决方案是for循环,那就是它。如果还有其他选择,请显示。

4 个答案:

答案 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");
    }};

来源:Ways For Creating HashMap

答案 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 );