2010-03-31 93 views
65

如何將列表轉換爲數組?以下代碼返回一個錯誤。將列表<String>轉換爲Java中的字符串[]

public static void main(String[] args) { 
    List<String> strlist = new ArrayList<String>(); 
    strlist.add("sdfs1"); 
    strlist.add("sdfs2"); 
    String[] strarray = (String[]) strlist.toArray();  
    System.out.println(strarray); 
} 

錯誤:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String; 
    at test.main(test.java:10) 
+1

對於大多數有錯誤的問題,您應該發佈您收到的錯誤消息。 – 2010-03-31 12:01:47

+1

我更喜歡stackoverflow。感謝您在google中的排名1。 – Ninjaxor 2013-04-07 00:57:08

回答

93

你想

String[] strarray = strlist.toArray(new String[0]); 

here的文檔和注意,您也可以調用此方法以這樣一種方式,它填充傳遞的數組,而不是僅僅用它來確定返回的類型。另外請注意,也許當你打印你的陣列時,你更喜歡

System.out.println(Arrays.toString(strarray)); 

因爲那樣會打印出實際的元素。

+21

使用strlist.toArray(new String [strlist.size()]);通常效率更高。 – 2010-04-02 17:28:50

3

List.toArray()必然返回一個Object數組。要獲取字符串數組,您需要使用投射語法:

String[] strarray = strlist.toArray(new String[0]); 

有關更多信息,請參閱javadoc for java.util.List。

18
public static void main(String[] args) { 
    List<String> strlist = new ArrayList<String>(); 
    strlist.add("sdfs1"); 
    strlist.add("sdfs2"); 

    String[] strarray = new String[strlist.size()] 
    strlist.toArray(strarray); 

    System.out.println(strarray); 


} 
+2

我也喜歡這個版本的'toArray'方法,因爲它重新使用參數strarray,而不是返回一個新的實例 – 2010-03-31 12:17:23

2

我設計併爲這種任務的實現Dollar

String[] strarray= $(strlist).toArray(); 
+0

你的$ API看起來不錯,也許像'sort'這樣的幾個方法可以接受比較器,這會使它更加有用。 – Greg 2010-03-31 13:24:54

+0

謝謝!隨意發送補丁或使用bitbucket打開功能請求。 – dfa 2010-03-31 13:33:56

+0

爲了看到你的實現,我必須安裝20M程序來'克隆​​'你的254.3 KB源代碼。 – Sawyer 2010-03-31 13:39:06

0

字符串[] strarray = strlist.toArray(新的String [0]);

if you want List轉換爲字符串 use StringUtils.join(slist,'\ n');