Collectors.flatMapping()
Gruplama toplayıcısının içinde düzleştirme yapmak için flatMapping() kullanın.
Kod Karşılaştırması
✕ Java 8
// Flatten within a grouping collector
// Required complex custom collector
Map<String, Set<String>> tagsByDept =
// no clean way in Java 8
✓ Java 9+
var tagsByDept = employees.stream()
.collect(groupingBy(
Emp::dept,
flatMapping(
e -> e.tags().stream(),
toSet()
)
));
Bu kodda bir sorun mu gördünüz? Bize bildirin.
Modern yöntem neden daha iyi
Birleştirilebilir
groupingBy içinde aşağı akış toplayıcısı olarak çalışır.
Tek geçiş
Tek bir akış geçişinde düzleştirme ve gruplama yapılır.
İç içe kullanılabilir
Diğer aşağı akış toplayıcılarıyla birleştirilebilir.
Eski Yaklaşım
İç içe flatMap
Modern Yaklaşım
flatMapping()
JDK'dan itibaren
9
Zorluk
Orta
JDK Desteği
Collectors.flatMapping()
Mevcut
JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)
Nasıl çalışır
Collectors.flatMapping(), bir bire-çok eşlemeyi aşağı akış toplayıcısı olarak uygular. Stream.flatMap() işlevinin toplayıcı karşılığıdır — groupingBy veya partitioningBy içinde kullanışlıdır.
İlgili Belgeler