3.7 KiB
title | localeTitle |
---|---|
Streams | تيارات |
تيارات
في Java 8 Streams تمت إضافتها كميزة جديدة في مربع أدوات Java. تتيح لك مجموعات البث معالجة المجموعات بسرعة وسهولة.
يرجى قراءة الفصل حول lambdas والبرمجة الوظيفية قبل المتابعة.
كيف تعمل
يقوم الدفق بتكرار عناصر المجموعة لك. يتم استدعاء كل عملية وسيطة وعملية لكل كائن. بمجرد الانتهاء من جميع العمليات للكائنات الأولى ، ثم يتم تحميل الكائن الثاني.
طرق مهمة
خلق
Collection.stream()
: إنشاء دفق من أي كائن من أي فئة تنفيذCollection
Arrays.stream(array)
: إنشاء دفق من صفيف
العمليات الوسيطة
هذه العمليات تحويل "كائنات دفق" بطريقة أو بأخرى.
Stream.map(Function<In,Out> function)
: تطبيق وظيفة لتحويل In إلى OutStream.filter(Predicate<In> predicate)
: إزالة كائنات من Stream التي لاStream.filter(Predicate<In> predicate)
trueStream.distinct()
: إزالة كائنات من دفق والتي هي مكررةStream.sorted()
: فرز الكائنات في الدفقStream.limit(int n)
: end Stream after n Objects
العمليات الطرفية
هذه العمليات تلقي "كائنات دفق" وإنهاء "دفق".
Stream.collect(Collector<In,?,Out> collector)
: جمع كافة الكائنات في دفق في كائنStream.forEach(Consumer<In> consumer)
: تستهلك كافة الكائنات في دفق باستخدام الدالة المستهلكStream.count()
: حساب كافة الكائنات في دفقStream.findFirst()
: إرجاع الكائن الأول من الدفق وإيقافStream.anyMatch(Predicate<In> predicate)
: إرجاع true إذا كان أي كائن في Stream اختبارات true لـ PredicateStream.allMatch(Predicate<In> predicate)
: إرجاع true إذا كان كل كائن في اختبار Stream صحيح لـ Predicate
أمثلة
`// print the length of all Strings in a List for (String string : Arrays.asList("abc", "de", "f", "abc")) { int length = string.length(); System.out.println(length); }
Arrays.asList("abc", "de", "f", "abc") .stream() .map(String::length) .forEach(System.out::println);
// output: 3 2 1 3 `
`// print all Strings in a List with a Length greater than 2 for (String string : Arrays.asList("abc", "de", "f", "abc")) { if (string.length() > 2) { System.out.println(string); } }
Arrays.asList("abc", "de", "f", "abc") .stream() .filter(string -> string.length() > 2) .forEach(System.out::println);
// output: abc abc `
`// create a sorted List with all unique Strings from another List which are longer than or requal 2 List result = new ArrayList<>(); for (String string : Arrays.asList("de", "abc", "f", "abc")) { if (string.length() >= 2 && ! result.contains(string)) { result.add(string); } } Collections.sort(result);
List result2 = Arrays.asList("de", "abc", "f", "abc") .stream() .filter(string -> string.length() >= 2) .distinct() .sorted() .collect(Collectors.toList());
// result: abc de `