Bir int dizisini List'e dönüştürmeye çalışıyordum ve Java 8 Stream kullanmanın alışılmadık yolunu seçtim ve bununla geldim
Arrays.stream(arr).boxed().collect(Collectors.toList());
Hala bu çizgiyi tam olarak anlamakta zorlanıyorum, çoğunlukla,
Collectors.toList()
Bu durumda neden birArrayList<Integer>
uygulamaList
arayüzü döndürülüyor ? Neden olmasınLinkedList<Integer>
veyaList
arayüze uygun başka bir genel sınıf ? API Notları bölümünde, burada ArrayList'ten kısaca bahsetmemek dışında, bu konuda hiçbir şey bulamıyorum .Sol panel ne anlama geliyor? Açıkçası genel dönüş türü ( benim kod burada). Bence yöntemin genel tür argümanı, ama nasıl belirtilir? Collector interface belgesine baktım ve onu ememedim.
Stream.collect()
R
ArrayList<Integer>
<R, A>
Collectors.toList()
bu durumda dönüşlerinde bir ArrayList<Integer>
" Bu bir getirmeyebilir ArrayList
. List
Uygulama olduğunu tanımsız , döndüğü Ne uygulanması güvenemez, böylece. Gibi javadoc diyor: "Orada türüne hiçbir garanti , mutability, serializability veya iade Listesinin parçacığı güvenliği;"
toList()
bir dönen değildir ArrayList
ya List
da bir dönen - Collector
sonunda oluşturmak ve dönecektir hangi bir List
- de belgelerine durumları:" ... hiçbir garanti yoktur tip , mutability, serializability veya Listesinin parçacığı güvenliği döndü; Döndürülen Liste üzerinde daha fazla kontrol gerekiyorsa, toCollection (Tedarikçi) kullanın .... "
R
ortaya çıkan türün genel türüdür.A
Toplayıcının ara birikim türünün genel türü. Bu bir toplayıcının nasıl çalıştığının uygulama detayıdır. Paralel işleme için de böler ve fetheder, ilk önce ara tiplere toplar.