2012-08-22 77 views
2

我想將一個hashmap轉換成一個數組,我可以把它放入一個創建的字符串數組中。然而我得到java.lang。我將我的drinkar.keySet()。toArray()轉換爲String [],但它仍然不起作用。將hashmap轉換爲stringarray

public String[] receiveArrayList(){ 

String[] list = new String[0]; 

    try { 
     ois = new ObjectInputStream(socket.getInputStream()); 
     drinkar = (HashMap<String, ArrayList<String>>) (ois.readObject()); 
     System.out.println(drinkar); 

     System.out.println(Arrays.toString(drinkar.keySet().toArray())); 
     list = (String[]) (drinkar.keySet().toArray()); 

     for(int i = 0; i < list.length; i++){ 
      System.out.println(list); 
     } 


    } catch (ClassNotFoundException ex) { 
     System.out.println(ex); 
    } catch (IOException ex) { 
     System.out.println(ex); 
    } 
    return list; 

} 

回答

3

drinkar.keySet().toArray()返回Object[]String[]

一種方式可以是:

用戶Collections.toArray(StringArry)

(或)

迭代通過keySet並且每個元素添加到陣列。

+0

謝謝,但我似乎無法得到它的權利。我不認爲我知道如何正確迭代。 – DrWooolie

+1

請發佈更新的代碼。 – kosa

+0

http://pastebin.com/FhD​​g9qes – DrWooolie

0

另一種選擇是創建ArrayList<type>並添加元素並返回list.toArray()。這正是toArray不上entryset因爲不前的桌面

9

的使用toArray(T[])如不能輸入代碼:

String[] list = drinkar.keySet().toArray(new String[0]); 

通過給空數組作爲參數,你告訴toArray創建的新數組相同類型的你將只有正確的尺寸。


只是注意:如果可以選擇,它通常是更方便(更安全)與集合,如ArrayList代替陣列工作。

1

String st [] = hm.keySet()。toArray(new String [hm.size()]);