Stream takeWhile / dropWhile
خذ أو أسقط عناصر من Stream بناءً على 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)
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
دارة قصيرة
تتوقف المعالجة فور فشل Predicate.
مناسب لخطوط الأنابيب
يتسلسل مع عمليات Stream الأخرى بشكل طبيعي.
تصريحي
takeWhile يُقرأ كاللغة الطبيعية: 'خذ طالما أقل من 100'.
الأسلوب القديم
حلقة يدوية
الأسلوب الحديث
takeWhile/dropWhile
منذ JDK
9
الصعوبة
مبتدئ
دعم JDK
Stream takeWhile / dropWhile
متاح
متاح على نطاق واسع منذ JDK 9 (سبتمبر 2017)
كيف يعمل
تُرجع takeWhile() العناصر طالما Predicate صحيح وتتوقف عند أول خطأ. تتخطّى dropWhile() العناصر طالما صحيح وتُرجع البقية. كلتاهما تعملان بشكل أفضل على Streams المرتّبة.
توثيق ذو صلة