شما اینجایید
خانه > آموزش > سری مطالب آموزش جاوا ۸ – بخش ششم Streams (قسمت دوم)

سری مطالب آموزش جاوا ۸ – بخش ششم Streams (قسمت دوم)

آموزش جاوا ۸

 

 

 

Collector ها

Collector ها برای ترکیب نتیجه پردازش روی عناصر یک Stream استفاده می‌شوند. می‌توان از Collector ها برای برگرداندن یک لیست [۱]یا یک رشته استفاده کرد.

List<String>strings = Arrays.asList(“abc”, “”, “bc”, “efg”, “abcd”,””, “jkl”);

List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());

System.out.println(“Filtered List: ”   filtered);

String mergedString = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.joining(“, “));

System.out.println(“Merged String: ”   mergedString);

 

آمار و ارقام[۲]

با جاوا ۸ ، collector های استاتیستیک معرفی شدند تا همه آمار و ارقام را زمانی که پردازش Stream به پایان رسید محاسبه کنند.

List numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);

IntSummaryStatistics stats = numbers.stream().mapToInt((x) -> x).summaryStatistics();

System.out.println(“Highest number in List : ” + stats.getMax());

System.out.println(“Lowest number in List : ” + stats.getMin());

System.out.println(“Sum of all numbers : ” + stats.getSum());

System.out.println(“Average of all numbers : ” + stats.getAverage());

مثالی از یک Stream

این برنامه نوشته شده به زبان جاوا را در هر ویرایشگری به انتخاب خودتان ایجاد و اجرا کنید، مثلا C:\> JAVA

 

 

Java8Tester.java

import java.util.ArrayList;

import java.util.Arrays;

import java.util.IntSummaryStatistics;

import java.util.List;

import java.util.Random;

import java.util.stream.Collectors;

import java.util.Map;

public class Java8Tester {

   public static void main(String args[]) {

      System.out.println(“Using Java 7: “);

      // رشته‌های خالی را می‌شمرد

      List<String> strings = Arrays.asList(“abc”, “”, “bc”, “efg”, “abcd”,””, “jkl”);

      System.out.println(“List: ” +strings);

      long count = getCountEmptyStringUsingJava7(strings);

      System.out.println(“Empty Strings: ” + count);

      count = getCountLength3UsingJava7(strings);

      System.out.println(“Strings of length 3: ” + count);

      //خالی کردن رشته خالی

      List<String> filtered = deleteEmptyStringsUsingJava7(strings);

      System.out.println(“Filtered List: ” + filtered);

      //استرینگ خالی را پاک می‌کند

      String mergedString = getMergedStringUsingJava7(strings,”, “);

      System.out.println(“Merged String: ” + mergedString);

      List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);

      //لیستی از اعداد مربع کامل می‌گیرد

      List<Integer> squaresList = getSquares(numbers);

      System.out.println(“Squares List: ” + squaresList);

      List<Integer> integers = Arrays.asList(1,2,13,4,15,6,17,8,19);

      System.out.println(“List: ” +integers);

      System.out.println(“Highest number in List : ” + getMax(integers));

      System.out.println(“Lowest number in List : ” + getMin(integers));

      System.out.println(“Sum of all numbers : ” + getSum(integers));

      System.out.println(“Average of all numbers : ” + getAverage(integers));

      System.out.println(“Random Numbers: “);

      //ده عدد تصادفی را چاپ می‌کند

      Random random = new Random();

      for(int i = 0; i < 10; i++) {

         System.out.println(random.nextInt());

      }

      System.out.println(“Using Java 8: “);

      System.out.println(“List: ” +strings);

      count = strings.stream().filter(string->string.isEmpty()).count();

      System.out.println(“Empty Strings: ” + count);

      count = strings.stream().filter(string -> string.length() == 3).count();

      System.out.println(“Strings of length 3: ” + count);

      filtered = strings.stream().filter(string ->!string.isEmpty()).collect(Collectors.toList());

      System.out.println(“Filtered List: ” + filtered);

      mergedString = strings.stream().filter(string ->!string.isEmpty()).collect(Collectors.joining(“, “));

      System.out.println(“Merged String: ” + mergedString);

      squaresList = numbers.stream().map( i ->i*i).distinct().collect(Collectors.toList());

      System.out.println(“Squares List: ” + squaresList);

      System.out.println(“List: ” +integers);

      IntSummaryStatistics stats = integers.stream().mapToInt((x) ->x).summaryStatistics();

      System.out.println(“Highest number in List : ” + stats.getMax());

      System.out.println(“Lowest number in List : ” + stats.getMin());

      System.out.println(“Sum of all numbers : ” + stats.getSum());

      System.out.println(“Average of all numbers : ” + stats.getAverage());

      System.out.println(“Random Numbers: “);

      random.ints().limit(10).sorted().forEach(System.out::println);

      //parallel processing

      count = strings.parallelStream().filter(string -> string.isEmpty()).count();

      System.out.println(“Empty Strings: ” + count);

   }

   private static int getCountEmptyStringUsingJava7(List<String> strings) {

      int count = 0;

      for(String string: strings) {

         if(string.isEmpty()) {

            count++;

         }

      }

      return count;

   }

   private static int getCountLength3UsingJava7(List<String> strings) {

      int count = 0;

      for(String string: strings) {

         if(string.length() == 3) {

            count++;

         }

      }

      return count;

   }

   private static List<String> deleteEmptyStringsUsingJava7(List<String> strings) {

      List<String> filteredList = new ArrayList<String>();

      for(String string: strings) {

         if(!string.isEmpty()) {

             filteredList.add(string);

         }

      }

      return filteredList;

   }

بخش‌های دیگر مقاله را از لینک‌های زیر بخوانید:

سری مطالب آموزش جاوا ۸ – بخش ششم Streams (قسمت اول)

 

 

 

 

[۱] List

[۲] Statistics

پاسخ دهید

بالا