Collectors.teeing()
একবার স্ট্রিম ট্রাভার্স করেই দুটি আলাদা এগ্রিগেশন (সমষ্টি) বের করুন।
কোড তুলনা
✕ Java 8
long count = items.stream().count();
double sum = items.stream()
.mapToDouble(Item::price)
.sum();
var result = new Stats(count, sum);
✓ Java 12+
var result = items.stream().collect(
Collectors.teeing(
Collectors.counting(),
Collectors.summingDouble(Item::price),
Stats::new
)
);
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
সিঙ্গেল পাস
দুইবারের বদলে স্ট্রিমটি মাত্র একবারই প্রসেস করা যায়।
কম্পোজেবল
যেকোনো দুটি কালেক্টরকে একটি মার্জার ফাংশন দিয়ে সহজেই যুক্ত করা যায়।
ইমিউটেবল ফলাফল
সরাসরি কোনো রেকর্ড (record) বা ভ্যালু অবজেক্টে মার্জ করা যায়।
পুরনো পদ্ধতি
দুটি ধাপে
আধুনিক পদ্ধতি
teeing()
JDK থেকে
12
কঠিনতা
মধ্যম
JDK সমর্থন
Collectors.teeing()
উপলব্ধ
JDK 12 (মার্চ 2019) থেকে ব্যাপকভাবে উপলব্ধ
কীভাবে কাজ করে
Collectors.teeing() স্ট্রিমের প্রতিটি উপাদানকে দুটি আলাদা ডাউনস্ট্রিম কালেক্টরে পাঠায় এবং তাদের ফলাফলগুলোকে মার্জ বা একত্রিত করে। এর ফলে একই ডেটা দুইবার স্ট্রিম করতে হয় না এবং মিউটেবল (পরিবর্তনশীল) অ্যাকুমুলেটর ব্যবহারের প্রয়োজন পড়ে না।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ