Stream takeWhile / dropWhile
একটি প্রেডিকেটের (predicate) উপর ভিত্তি করে একটি স্ট্রিম থেকে এলিমেন্ট নিন বা বাদ দিন।
কোড তুলনা
✕ Java 8
List<Integer> result = new ArrayList<>();
for (int n : sorted) {
if (n >= 100) break;
result.add(n);
}
// no stream equivalent in Java 8
✓ Java 9+
var result = sorted.stream()
.takeWhile(n -> n < 100)
.toList();
// or: .dropWhile(n -> n < 10)
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
শর্ট-সার্কিট (Short-circuit)
প্রেডিকেট ব্যর্থ হওয়ার সাথে সাথে প্রসেসিং বন্ধ হয়ে যায়।
পাইপলাইন-ফ্রেন্ডলি (Pipeline-friendly)
অন্যান্য স্ট্রিম অপারেশনগুলোর সাথে স্বাভাবিকভাবে চেইন হয়।
ডিক্লারেটিভ (Declarative)
takeWhile মেথডটি '১০০ এর কম হলে নাও' এর মতো করে পঠনযোগ্য।
পুরনো পদ্ধতি
ম্যানুয়াল লুপ
আধুনিক পদ্ধতি
takeWhile/dropWhile
JDK থেকে
9
কঠিনতা
প্রাথমিক
JDK সমর্থন
Stream takeWhile / dropWhile
উপলব্ধ
JDK 9 (সেপ্টেম্বর 2017) থেকে ব্যাপকভাবে উপলব্ধ
কীভাবে কাজ করে
takeWhile() মেথডটি প্রেডিকেট সত্য (true) হওয়া পর্যন্ত এলিমেন্ট রিটার্ন করে এবং প্রথম মিথ্যা (false) তে পৌঁছালে থামা। dropWhile() মেথডটি প্রেডিকেট সত্য থাকা পর্যন্ত এলিমেন্ট স্কিপ করে এবং বাকিগুলো রিটার্ন করে। উভয় মেথডই অর্ডারড স্ট্রিমগুলোতে (ordered streams) সবচেয়ে ভালো কাজ করে।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ