Biraz geç görünüyor ama işte benim iki sentim. Biz olamaz List<int>olarak intbiz sadece olabilir böylece ilkel türüdür List<Integer>.
Java 8 (int dizisi)
int[] ints = new int[] {1,2,3,4,5};
List<Integer> list11 =Arrays.stream(ints).boxed().collect(Collectors.toList());
Java 8 ve altı (Tamsayı dizisi)
Integer[] integers = new Integer[] {1,2,3,4,5};
List<Integer> list21 = Arrays.asList(integers); // returns a fixed-size list backed by the specified array.
List<Integer> list22 = new ArrayList<>(Arrays.asList(integers)); // good
List<Integer> list23 = Arrays.stream(integers).collect(Collectors.toList()); //Java 8 only
Listeye değil ArrayList'e mi ihtiyacınız var?
Belirli bir uygulamanın ListÖrnegin asagidaki ArrayListgibi kullanabiliriz toCollection:
ArrayList<Integer> list24 = Arrays.stream(integers)
.collect(Collectors.toCollection(ArrayList::new));
Neden list21yapısal olarak değiştirilemiyor?
Arrays.asListDöndürülen listenin boyutunu kullandığımızda , geri dönen liste olmadığı için sabitjava.util.ArrayList , içinde tanımlanan özel bir statik sınıfjava.util.Arrays . Dolayısıyla, döndürülen listeye öğe ekler veya listeden öğe kaldırırsak, bir UnsupportedOperationExceptionatılır. Bu yüzden list22listeyi değiştirmek istediğimizde gitmeliyiz . Java8'imiz varsa o zaman da gidebiliriz list23.
Açık olmak gerekirse list21 olmak gerekirse, arayabileceğimiz anlamda değiştirilebilir, list21.set(index,element)ancak bu liste yapısal olarak değiştirilemez, yani listeye öğe ekleyemez veya listeden öğe kaldıramaz. Bu soruyu da kontrol edebilirsiniz .
Değişmez bir liste istiyorsak, onu şu şekilde sarabiliriz:
List<Integer> list 22 = Collections.unmodifiableList(Arrays.asList(integers));
Dikkat edilmesi gereken bir diğer nokta, yöntemin Collections.unmodifiableListbelirtilen listenin değiştirilemez bir görünümünü döndürmesidir. Değiştirilemez bir görünüm koleksiyonu değiştirilemeyen ve aynı zamanda bir destek koleksiyonunun bir görünümüdür. Destek koleksiyonunda değişikliklerin hala mümkün olabileceğini ve gerçekleşmeleri durumunda değiştirilemeyen görünümden görülebileceğini unutmayın.
Java 9 ve 10'da gerçekten değişmez bir listeye sahip olabiliriz.
Gerçekten Değişmez liste
Java 9:
String[] objects = {"Apple", "Ball", "Cat"};
List<String> objectList = List.of(objects);
Java 10 (Gerçekten Değişmez liste):
List.copyOf(Arrays.asList(integers))
Arrays.stream(integers).collect(Collectors.toUnmodifiableList());
Ayrıca daha fazla bilgi için bu cevabımı kontrol edin .
Arrays.asList(new int[] { 1, 2, 3 }):; Bir nedeni kesinlikle Java 1.4.2 derleme vermediint[]olduğunu değil birObject[].