2013-03-07 35 views
3

嗨,我想知道是否有複製數組列表比下面的一個聯機方式:複製數組列表

String array[] = new String[]{"1", "2", "3", "4" } ; 

List list = new ArrayList(); 

for (int i=0; i< array.length; i++){ 
    list.add(array[i]); 
} 

編輯:感謝知識性的回答,非常有幫助: )

+1

請使用通用List的版本。另外,'List '是一個接口,所以它不能實例化:您可以創建一個'ArrayList '或者'LinkedList '。 – 2013-03-07 21:53:35

+0

謝謝,這就是我不得不從頭開始,但是我在錯誤地發佈這個問題之前將其更改爲列表。 – phcoding 2013-03-07 22:00:08

+0

您仍然需要添加類型參數,例如'列表'。 – 2013-03-07 22:27:42

回答

9

是的,有一個單線程,使用Arrays.asList(T...a)將數組轉換爲列表並將其作爲參數傳遞給ArrayList重載的構造函數,該構造函數需要一個Collection。

List<String> list = new ArrayList<String>(Arrays.asList(array)) 
+1

'List '是一個接口,所以你不能實例化它。也許你的意思是'新的ArrayList ()'? – 2013-03-07 21:50:52

+0

@GiulioPiancastelli oops。排序:) :) – PermGenError 2013-03-07 21:51:54

+1

只有當你想修改列表時,新的纔有用,否則Cratylus的答案更好 – Aubin 2013-03-07 21:54:32

6

如果您需要在列表格式數組,但實際上並不需要在結構修改,你可以做數組:List<String> list = Arrays.asList(array);
否則,@ PremGenError的答案是要去的。

+2

+1解釋'Arrays.asList()並創建一個新的清單。 – 2013-03-07 21:55:02

2

最簡單的方法是:

List<String> fixedList = Arrays.asList(array); 

然而,這將返回指定數組支持的固定大小的列表。 這意味着嘗試修改列表(如list.add("10")) 將在運行時導致java.lang.UnsupportedOperationException- 所以要小心。

的可修改列表可以基於固定大小的列表上構建:

List<String> modifiableList = new ArrayList<String>(fixedList); 

這兩個步驟可以合併成一個單一的代碼行,像這樣:

List<String> list = new ArrayList<String>(Arrays.asList(array));