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>uygulamaListarayüzü döndürülüyor ? Neden olmasınLinkedList<Integer>veyaListarayü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()RArrayList<Integer><R, A>
Collectors.toList()bu durumda dönüşlerinde bir ArrayList<Integer>" Bu bir getirmeyebilir ArrayList. ListUygulama 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 ArrayListya Listda bir dönen - Collectorsonunda 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 .... "
Rortaya çıkan türün genel türüdür.AToplayı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.