如何用一個List提供的數據填充數組?用List數據填充數組
例如,我有一個字符串列表:
List l = new ArrayList<String>();
l.add("a");
l.add("b");
l.add("c");
話,我想這個數據複製到一個String數組:
String[] array = ?
如何用一個List提供的數據填充數組?用List數據填充數組
例如,我有一個字符串列表:
List l = new ArrayList<String>();
l.add("a");
l.add("b");
l.add("c");
話,我想這個數據複製到一個String數組:
String[] array = ?
有一個在列表中的toArray()方法...
您必須先分配一個適當大小的數組(通常爲list.size()),然後將其作爲參數傳遞給toArray方法。該數組將使用列表內容進行初始化。
例如:
String[] myArray = new String[myList.size]();
myList.toArray(myArray);
你也可以做指定者
的括號內的新呼叫首先,你必須指定具體類型的List
- List<String>
(不要將其生的)。
然後,你可以做
String[] array = list.toArray(new String[list.size()]);
String[] array = new String[l.size()];
l.toArray(array);
語法是有點愚蠢的;你必須提供你自己創建的數組作爲輸入。
String[] array = l.toArray(new String[l.size()]);
可以使用toArray(T[] a)
方法:
String[] arr = list.toArray(new String[0]);
或者交替:
String[] arr = list.toArray(new String[list.size()]);
這兩者之間的區別是,後者可能不需要分配一個新的數組。
有效的Java第二版:第23項:不要在新代碼中使用原始類型。
使用原始類型被允許僅作爲讓步的遺留代碼兼容。強烈建議在將通用性引入到Java編程語言後編寫的代碼中使用原始類型。 未來版本的Java編程語言可能會禁止使用原始類型。
不要命名的標識符l
的習慣。它看起來非常像1
。
爲了安全,它應該是'myArray = myList.toArray(myArray);' – Hardcoded 2010-03-29 15:17:53
@Hardcoded:我一直在想那個。爲什麼這裏還有返回類型?我總是討厭改變他們的輸入並返回它的方法,除非你鏈接它們。 – Uri 2010-03-29 15:38:05
該方法首先檢查給定的數組是否足夠大。如果不是,則會創建一個新的。數組參數的唯一原因是,在運行時沒有關於數組類型的信息。它本來也可以是一個Class對象。 – Hardcoded 2010-03-29 15:43:38