2010-03-29 92 views
2

如何用一個List提供的數據填充數組?用List數據填充數組

例如,我有一個字符串列表:

List l = new ArrayList<String>(); 
l.add("a"); 
l.add("b"); 
l.add("c"); 

話,我想這個數據複製到一個String數組:

String[] array = ? 

回答

9

有一個在列表中的toArray()方法...
您必須先分配一個適當大小的數組(通常爲list.size()),然後將其作爲參數傳遞給toArray方法。該數組將使用列表內容進行初始化。

例如:

String[] myArray = new String[myList.size](); 
myList.toArray(myArray); 

你也可以做指定者

的括號內的新呼叫
+2

爲了安全,它應該是'myArray = myList.toArray(myArray);' – Hardcoded 2010-03-29 15:17:53

+0

@Hardcoded:我一直在想那個。爲什麼這裏還有返回類型?我總是討厭改變他們的輸入並返回它的方法,除非你鏈接它們。 – Uri 2010-03-29 15:38:05

+0

該方法首先檢查給定的數組是否足夠大。如果不是,則會創建一個新的。數組參數的唯一原因是,在運行時沒有關於數組類型的信息。它本來也可以是一個Class對象。 – Hardcoded 2010-03-29 15:43:38

7

首先,你必須指定具體類型的List - List<String>(不要將其生的)。

然後,你可以做

String[] array = list.toArray(new String[list.size()]); 
1
String[] array = new String[l.size()]; 
l.toArray(array); 
2

語法是有點愚蠢的;你必須提供你自己創建的數組作爲輸入。

String[] array = l.toArray(new String[l.size()]); 
3

可以使用toArray(T[] a)方法:

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

或者交替:

String[] arr = list.toArray(new String[list.size()]); 

這兩者之間的區別是,後者可能不需要分配一個新的數組。


有效的Java第二版:第23項:不要在新代碼中使用原始類型。

JLS 4.8 Raw Types

使用原始類型被允許僅作爲讓步的遺留代碼兼容。強烈建議在將通用性引入到Java編程語言後編寫的代碼中使用原始類型。 未來版本的Java編程語言可能會禁止使用原始類型。


不要命名的標識符l的習慣。它看起來非常像1