Biraz geç görünüyor ama işte benim iki sentim. Biz olamaz List<int>
olarak int
biz 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 ArrayList
gibi kullanabiliriz toCollection
:
ArrayList<Integer> list24 = Arrays.stream(integers)
.collect(Collectors.toCollection(ArrayList::new));
Neden list21
yapısal olarak değiştirilemiyor?
Arrays.asList
Dö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 UnsupportedOperationException
atılır. Bu yüzden list22
listeyi 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.unmodifiableList
belirtilen 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[]
.