Collectors.flatMapping()
Java 9 में, Collectors क्लास में एक नया मेथड जोड़ा गया: flatMapping(). यह Collectors.mapping() मेथड के समान है जिसमें flatMapping() मेथड हमें नेस्टेड संग्रहों को संभालने की अनुमति देता है। Collectors.flatMapping() मेथड इनपुट एलिमेंट्स पर लागू करने के लिए एक फंक्शन और फंक्शन के माध्यम से पास किए गए एलिमेंट्स को संचित करने के लिए एक कलेक्टर लेता है। Collectors.mapping() मेथड के विपरीत, Collectors.flatMapping() मेथड एलिमेंट्स की एक स्ट्रीम से निपटता है जो हमें अनावश्यक मध्यवर्ती संग्रहों से छुटकारा पाने की अनुमति देता है।
सिंटैक्स
public static <T,U,A,R> Collector<T,?,R> flatMapping(
Function<? super T,? extends Stream<? extends U>> mapper,
Collector<? super U,A,R> downstream)
उदाहरण: नेस्टेड लिस्ट्स को फ़िल्टर और फ्लैट करना
import java.util.stream.Collectors;
import java.util.Stream;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public class FlatMappingMethodTest {
public static void main(String args[]) {
Map<Integer, List<Integer>> map = Stream.of(List.of(1, 2, 3, 4, 5, 6), List.of(7, 8, 9, 10))
.collect(Collectors.groupingBy(
Collection::size,
Collectors.flatMapping(
l -> l.stream().filter(i -> i % 2 == 0),
Collectors.toList()
)
));
System.out.println(map);
}
}
आउटपुट
{4=[8, 10], 6=[2, 4, 6]}
flatMapping() नेस्टेड स्ट्रीम्स को कुशलतापूर्वक फ्लैट करता है और डाउनस्ट्रीम कलेक्टर में संचित करता है।