簡體   English   中英

如何將HashMap <String,ArrayList <String >>轉換為HashMap <String,String []>?

[英]How can I convert a HashMap<String, ArrayList<String>> to a HashMap<String, String[]>?

我有一個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。

為什么這不起作用,我該如何解決?

ArrayList重載了toArray方法。

第一個表單toArray()將返回一個Object[] 這不是你想要的,因為你不能將Object[]轉換為String[]

第二種形式toArray(T[] a)將返回一個數組,該數組使用您傳入其中的任何數組鍵入。

您需要在此處使用第二個表單,以便正確鍵入數組。

arrayMap.put(entry.getKey(), entry.getValue()
                                  .toArray(new String[entry.getValue().size()]));
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()將返回對象數組“object []”

但是需要String []。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM