2013-10-04 12 views
10

C# içinde bir çeşit koleksiyon oluşturabilir ve aynı satırdaki verilerle başlatabilirim.Bir koleksiyonu nasıl ilklendirebilir ve aynı hatta veri ekleyebilirim?

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

Java ile bunun için eşdeğer bir yolu var mı? Boris yorumlardaki bahisler gibi

+0

Yorumlar kısmında bulabilirsiniz? – Joe

+1

muhtemelen, bu sorunun kolayca yinelenebilen çok sayıda kopyası olduğu için. –

+0

Arama yaptım. bir sebepten ötürü hiçbir şey çıkmadı. – Joe

cevap

15

Eğer gerekiyorsa bir salt okunurList

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

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

üzerinde List sonra değiştirmek isterseniz.

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

Bunu kaldıracağım, sonuçta oluşan 'List' değişmez olur. –

+0

Tamam 'yeni ArrayList (Arrays.asList ("one", "two", "three")) – Nailgun

+0

Artık tüm bunlar, bir liste ve dizinin yanı sıra dizinin liste sarmalayıcılarını oluşturdunuz gerekli bir dizi oldu ... –

3

Sen sonuçlanan List değişmez Arrays.asList(T... a)

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

kullanabilirsiniz (yani. Salt okunur).

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

Bu, sonuç List'in değişmez olmasını sağlar. –

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

Boris gibi:

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

Ayrıca anonim alt sınıfı ve başlatıcı kullanılarak List oluşturabilirsiniz: Sen koleksiyonunu değiştirmek için bir ArrayList veya benzeri dönüştürmek gerekir yorumladı, senin numbers immutable yapar.

Evet, ancak iki çizgi ile yapabilirsiniz. Gauva

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

Ben ile gelip başardık en iyi ile

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

yine sadece tek bir satırında istiyorsanız geçerli:

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

Temelde, bu ArrayList sınıfının anonim alt sınıfını oluşturduğunuzu söyler, bu da "one", "two", "three" kullanarak statik olarak başlatılır.

+0

Bu soru, Java için tasarlanmıştır. –

+0

Birkaç satırlık koddan kaçınmak için anonim bir sınıf oluşturmanın bir nedeni yoktur. –

+0

Üzgünüm, son zamanlarda biraz fazla javascript üzerinde çalışıyorum. –

4

Ben de tekrar tip aşağı yazma gereğini ortadan kaldırır VE hemen veri ekleyerek yolları her türlü sahiptir kütüphane (eski Google Koleksiyonları denir) Guava kullanarak bunu tercih ediyoruz.

Örnek: Bütün koleksiyonları diğer tür ve onların çeşitli uygulamaları için List<YourClass> yourList = Lists.newArrayList(yourClass1, yourclass2);

aynı eser:

Ya ekleyerek verilerle List<YourClass> yourList = Lists.newArrayList();. Başka bir örnek: Set<String> treeSet = Sets.newTreeSet();

Sen downvoter gelen https://code.google.com/p/guava-libraries/

İlgili konular