Stream.mapMulti()
ইন্টারমিডিয়েট স্ট্রিম তৈরি না করেই প্রতি ইনপুটের জন্য শূন্য বা তার বেশি এলিমেন্ট নির্গত করুন।
কোড তুলনা
✕ 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));
}
);
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
কম অ্যালোকেশন (Less Allocation)
প্রতি এলিমেন্টের জন্য কোনো ইন্টারমিডিয়েট স্ট্রিম তৈরি হয় না।
ইম্পারেটিভ স্টাইল (Imperative Style)
সরাসরি লুপ এবং কন্ডিশনাল ব্যবহার করুন।
ফ্লেক্সিবল (Flexible)
সম্পূর্ণ কন্ট্রোল সহ শূন্য, এক, বা একাধিক এলিমেন্ট নির্গত করুন।
পুরনো পদ্ধতি
flatMap + List
আধুনিক পদ্ধতি
mapMulti()
JDK থেকে
16
কঠিনতা
মধ্যম
JDK সমর্থন
Stream.mapMulti()
উপলব্ধ
JDK 16 (মার্চ 2021) থেকে ব্যাপকভাবে উপলব্ধ
কীভাবে কাজ করে
mapMulti() মেথডটি flatMap-এর একটি ইম্পারেটিভ বিকল্প, যা প্রতিটি এলিমেন্টের জন্য ইন্টারমিডিয়েট স্ট্রিম অবজেক্ট তৈরি করা এড়িয়ে যায়। ম্যাপিং যখন অল্প সংখ্যক এলিমেন্ট তৈরি করে, তখন এটি আরও ইফিশিয়েন্ট (efficient) হয়।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ