如何将HashMap <String,ArrayList <String >>转换为HashMap <String,String []>?

Evo*_*lor 3 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());
}
Run Code Online (Sandbox Code Playgroud)

但是,因为entry.getValue().toArray(),我的IDE给了我错误:

Wrong 2nd argument type. Found: 'java.lang.Object[], required 'java.lang.String[]'.
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,因为arrayListMap指定我将使用Strings.

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

Mak*_*oto 6

ArrayList已经重载了该toArray方法.

第一种形式,toArray()将返回Object[].这不是你想要的,因为你无法将其Object[]转换为String[].

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

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

arrayMap.put(entry.getKey(), entry.getValue()
                                  .toArray(new String[entry.getValue().size()]));
Run Code Online (Sandbox Code Playgroud)