96 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			96 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | title: Streams | ||
|  | localeTitle: تيارات | ||
|  | --- | ||
|  | # تيارات
 | ||
|  | 
 | ||
|  | في Java 8 Streams تمت إضافتها كميزة جديدة في مربع أدوات Java. تتيح لك مجموعات البث معالجة المجموعات بسرعة وسهولة. | ||
|  | 
 | ||
|  | يرجى قراءة الفصل حول lambdas والبرمجة الوظيفية قبل المتابعة. | ||
|  | 
 | ||
|  | ## كيف تعمل
 | ||
|  | 
 | ||
|  | يقوم الدفق بتكرار عناصر المجموعة لك. يتم استدعاء كل عملية وسيطة وعملية لكل كائن. بمجرد الانتهاء من جميع العمليات للكائنات الأولى ، ثم يتم تحميل الكائن الثاني. | ||
|  | 
 | ||
|  | ## طرق مهمة
 | ||
|  | 
 | ||
|  | ### خلق
 | ||
|  | 
 | ||
|  | *   `Collection.stream()` : إنشاء دفق من أي كائن من أي فئة تنفيذ `Collection` | ||
|  | *   `Arrays.stream(array)` : إنشاء دفق من صفيف | ||
|  | 
 | ||
|  | ### العمليات الوسيطة
 | ||
|  | 
 | ||
|  | هذه العمليات تحويل "كائنات دفق" بطريقة أو بأخرى. | ||
|  | 
 | ||
|  | *   `Stream.map(Function<In,Out> function)` : تطبيق وظيفة لتحويل In إلى Out | ||
|  | *   `Stream.filter(Predicate<In> predicate)` : إزالة كائنات من Stream التي لا `Stream.filter(Predicate<In> predicate)` true | ||
|  | *   `Stream.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 لـ Predicate | ||
|  | *   `Stream.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<String> 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<String> result2 = Arrays.asList("de", "abc", "f", "abc")  | ||
|  |         .stream()  | ||
|  |         .filter(string -> string.length() >= 2)  | ||
|  |         .distinct()  | ||
|  |         .sorted()  | ||
|  |         .collect(Collectors.toList());  | ||
|  |   | ||
|  |  // result: abc de  | ||
|  | `  | ||
|  | 
 | ||
|  | ### مصادر
 | ||
|  | 
 | ||
|  | 1.  [معالجة البيانات باستخدام Java SE 8 Stream ، الجزء الأول](http://www.oracle.com/technetwork/articles/java/ma14-java-se-8-streams-2177646.html) |