Stream.mapMulti()
Ara akışlar oluşturmadan her giriş için sıfır veya daha fazla öğe yayın.
Kod Karşılaştırması
✕ Java 8
stream.flatMap(order ->
order.items().stream()
.map(item -> new OrderItem(
order.id(), item)
)
);
✓ Java 16+
stream.<OrderItem>mapMulti(
(order, downstream) -> {
for (var item : order.items())
downstream.accept(
new OrderItem(order.id(), item));
}
);
Bu kodda bir sorun mu gördünüz? Bize bildirin.
Modern yöntem neden daha iyi
Daha az bellek kullanımı
Her öğe için ara Stream oluşturulmaz.
Zorunlu stil
Döngüler ve koşullar doğrudan kullanılabilir.
Esnek
Tam denetimle sıfır, bir veya çok sayıda öğe yayılabilir.
Eski Yaklaşım
flatMap + List
Modern Yaklaşım
mapMulti()
JDK'dan itibaren
16
Zorluk
Orta
JDK Desteği
Stream.mapMulti()
Mevcut
JDK 16'dan itibaren geniş çapta kullanılabilir (Mart 2021)
Nasıl çalışır
mapMulti(), her öğe için ara Stream nesneleri oluşturmaktan kaçınan, flatMap'e alternatif bir zorunlu yöntemdir. Eşlemenin az sayıda öğe ürettiği durumlarda daha verimlidir.
İlgili Belgeler