2013-10-04 41 views
10

在C#中,我可以創建某種類型的集合並使用同一行上的數據進行初始化。如何初始化集合並在同一行上添加數據?

var foo = new List<string> {"one","two","three"};

是否有一個等同的方式在Java中做到這一點?

+0

評論發現呢? – Joe

+1

可能是因爲這個問題有很多重複的內容很容易搜索。 –

+0

我搜索了。由於某種原因沒有彈出。我將刪除它 – Joe

回答

15

如果你需要一個只讀List

List<String> numbers = Arrays.asList("one","two","three"); 

// Can't add since the list is immutable 
numbers.add("four"); // java.lang.UnsupportedOperationException 

如果您想上修改List以後。

List<String> numbers2 = new ArrayList<String>(
          Arrays.asList("one","two","three")); 
numbers2.add("four"); 

System.out.println(numbers2); // [one, two, three, four] 
0
List<String> list = Arrays.asList("one","two","three") 
+1

這使得產生的'List'不可變。 –

+0

好吧然後'新ArrayList (Arrays.asList(「一」,「二」,「三」))' – Nailgun

+0

現在你已經創建了一個列表和一個數組以及數組的列表包裝,當所有這些需要的是一個數組... –

3

您可以使用Arrays.asList(T... a)

List<String> foo = Arrays.asList("one","two","three"); 

正如鮑里斯在評論中提到所產生的List是不變的(即只讀)。您需要將其轉換爲ArrayList或類似,以修改集合:

List<String> foo = new ArrayList<String>() { 
    { 
     add("one"); 
     add("two"); 
     add("three"); 
    } 
}; 
+0

這使得生成的List不可變。 –

0
List<String> numbers = Arrays.asList("one","two","three"); 

由於鮑里斯:

List<String> foo = new ArrayList<String>(Arrays.asList("one","two","three")); 

您也可以使用匿名子類,並初始化創建List評論說,它使你的numbers不可變。

是的,你可以,但有兩條線。

List<String> numbers= new ArrayList<String>(); 
Collections.addAll(numbers,"one","two","three"); 

如果你仍然想在只有一條線,隨着Gauva

List<String> numbers= Lists.newArrayList("one","two","three"); 
0

,我已經能夠拿出的最好的是:

final List<String> foo = new ArrayList<String>() {{ 
    add("one"); 
    add("two"); 
    add("three"); 
}}; 

基本上,說您正在創建一個ArrayList類的匿名子類,然後使用"one", "two", "three"進行靜態初始化。

+0

此問題適用於Java。 –

+0

沒有理由創建一個匿名類來避免幾行代碼。 –

+0

對不起,最近我一直在研究一些過多的javascript。 –

4

我更喜歡使用的番石榴(以前稱爲谷歌集合)庫,這既消除了需要重新寫入類型下來,並擁有所有種類的添加數據直線距離的方式這樣做。

例子:List<YourClass> yourList = Lists.newArrayList();

或者添加數據:List<YourClass> yourList = Lists.newArrayList(yourClass1, yourclass2);

所有其他類型的集合和他們的各種實現同樣的作品。又如:Set<String> treeSet = Sets.newTreeSet();

您可以從downvoter https://code.google.com/p/guava-libraries/