2013-02-07 36 views
3

我有String秒的陣列,我期待能夠沿着在單行初始化一個數組一個ArrayList

String[] arrayOfStrings = {"this", "is", "an", "array", "of", "strings"}; 
List<String> listOfStrings = new ArrayList<String>(arrayOfStrings); 

List<String> listOfStrings = new ArrayList<String>(); 
listOfStrings.addAll(arrayOfStrings); 

線做一些事情我知道如果我的字符串已經在一個集合中,我可以同時執行這兩個操作,並且我可以遍歷數組並單獨添加它們,但是這有點麻煩。

有什麼辦法可以用數組初始化List(或任何有關此事的集合)?

回答

10

您可以使用Arrays.asList方法,它需要一個var-args,並返回一個由數組支持的固定大小List。所以,你不能添加任何元素到這個列表中。此外,對List元素所做的任何修改都將反映回array

String[] arrayOfStrings = {"this", "is", "an", "array", "of", "strings"}; 
List<String> list = Arrays.asList(arrayOfStrings); 

或: -

List<String> list = Arrays.asList("this", "is", "an", "array", "of", "strings"); 

如果你想提高這個列表的大小,你就必須把它傳遞ArrayList構造函數。

List<String> list = new ArrayList<String>(Arrays.asList(arrayOfStrings)); 
+0

列表是'不可修改'嗎?你的意思是你不能添加元素。列表內容是可修改的 – Cratylus

+0

@Cratylus。是的,我的意思是我們不能在其中添加任何元素。我會更新答案以消除混淆。 –

3

您可以使用Arrays.asList()靜態方法。

例如:

String[] arrayOfStrings = {"this", "is", "an", "array", "of", "strings"}; 
List<String> list = Arrays.asList(arrayOfStrings); 

請注意,您創建一個固定大小的列表以這樣的方式「通過陣列備份」。如果您希望能夠擴展它,你就必須做到以下幾點方法:

String[] arrayOfStrings = {"this", "is", "an", "array", "of", "strings"}; 
List<String> list = new ArrayList<String>(Arrays.asList(arrayOfStrings)); 
+0

+1,比我快:對 –

+1

注意,它創建了一個固定大小的列表,所以如果你特別想要一個'ArrayList'你需要做的'新的ArrayList (Arrays.asList(「A」 ,「b」,「c」))'。 –

+0

@RussellZahniser這是一個有效的說明。我會將其添加到答案中。 –

1

這可能不完全屬於你的問題,但可能是值得考慮的因素。

List<String> list = Arrays.asList("this", "is", "an", "array", "of", "strings");