如何转换HashMap <string,arraylist <string =“”>&gt;到HashMap <string,string [] =“”>?

时间:2015-06-29 15:36:38

标签: java arrays string arraylist hashmap

我有HashMap<String, ArrayList<String>>。我正在尝试将其转换为HashMap<String, String[]>

HashMap<String, ArrayList<String>> arrayListMap = new HashMap<>();
HashMap<String, String[]> arrayMap = new HashMap<>();
for (Map.Entry<String, ArrayList<String>> entry : arrayListMap.entrySet()) {
    arrayMap.put(entry.getKey(), entry.getValue().toArray());
}

然而,对于entry.getValue().toArray(),我的IDE给了我错误:

Wrong 2nd argument type. Found: 'java.lang.Object[], required 'java.lang.String[]'.

我不知道为什么,因为arrayListMap指定我将使用String s。

为什么这不起作用,我该如何解决?

2 个答案:

答案 0 :(得分:6)

ArrayList已超载toArray方法。

第一个表单toArray()将返回Object[]。这不是您想要的,因为您无法将Object[]转换为String[]

第二种形式toArray(T[] a)将返回一个数组,该数组使用您传入其中的任何数组进行输入。

您需要在此处使用第二个表单,以便正确键入数组。

arrayMap.put(entry.getKey(), entry.getValue()
                                  .toArray(new String[entry.getValue().size()]));

答案 1 :(得分:-1)

HashMap<String, ArrayList<String>> arrayListMap = new HashMap<>();
        HashMap<String, String[]> arrayMap = new HashMap<>();
        for (Map.Entry<String, ArrayList<String>> entry : arrayListMap.entrySet()) {
            arrayMap.put(entry.getKey(), entry.getValue().toArray(new String[entry.getValue().size()]));
        }

entry.getValue()。toArray()将返回对象数组&#34; object []&#34;

但需要String []。

所以需要使用返回T [] //泛型arg类型的方法entry.getValue()。toArray(T [] a)