জাভা 9-এ, সংগ্রাহক শ্রেণিতে একটি নতুন পদ্ধতি যোগ করা হয়েছে:ফ্ল্যাটম্যাপিং() . এটি Collectors.mapping() এর অনুরূপ যে পদ্ধতিতে ফ্ল্যাটম্যাপিং() পদ্ধতিটি আমাদের নেস্টেড সংগ্রহগুলি পরিচালনা করতে দেয়। 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]}