veri sınıflarının Örnek olarak aşağıdaki Verilen: Ben Ülkeler Neden Stream.flatMap bir koleksiyonu kabul edemiyor?
List<Country> countries = new ArrayList<>();
Listesini olurdu varsayarsak
class Country {
List<Region> regions = new ArrayList<>();
List<Region> getRegions() {
return regions;
}
}
class Region {
String getName() {
return "some name";
}
}
Ve ben onların Bölgeler ve isterim ilgili adlar için bu Stream istedi bu kod "getRegions" nin dönüş değeri beri derleme değil Ancak
countries.stream().flatMap(Country::getRegions).map(Region::getName)...
bir Koleksiyonu: aşağıdakileri yapmak için FlatMap Yöntemi kabul ettiği bir Akışın aksine (Liste). Ancak bildiğimden beri, herhangi bir Koleksiyonun bir sorun olmaması gereken Collection.stream() Yöntemi ile aktarılabileceğini biliyorum. Hala şu şekilde yazmak zorundayım: eskisinden daha
(daha zengin içerik verilmiş) olancountries.stream().flatMap(c -> c.getRegions().stream()).map(Region::getName)...
çok daha az okunabilir.
Sorular şu, bu kadar hantal olmak için, kaçırdığım herhangi bir sebep var mı? Bu rotayı almaya mecbur bıraktığımız, her zaman ekşi bir tada sahip olduğum çerçevemize çok sayıda örnek var. (Tahmin et Projemize Kotlin'i eklemem ve Stream sınıfını bir Koleksiyon alan bir flatMap Yöntemi ile genişletmeliyim: p veya yapsam mı?)
Ayrıca kafamda anlamlı olduğu gibi aşağıdakileri de denedim: Ülke :: getRegions :: stream – Lukas
'FlatMap'in bir koleksiyonu kabul etmesi gerektiğine katılıyorum, ancak emin değilim. "Yazmış olan insanlar bu şekilde yazmadılar" dışında kesin bir açıklama yapabilecekler. – khelwood
"hayır" da bir cevap olabilir :) – Lukas