• Tags ,
  •         
  • www.breakyizhan.com
  •    

    Stream API在Java 8中引入,用于处理对象集合。Stream 流是一系列对象,支持各种方法,这些方法可以流水线化以产生所需的结果。
    Java Stream 流的功能是 -

    • Stream 流不是数据结构,而是从集合,数组或I / O通道获取输入。
    • Stream 流不会更改原始数据结构,它们仅根据流水线方法提供结果。
    • 每个中间操作被懒惰地执行并且作为结果返回流,因此可以流水线化各种中间操作。终端操作标记流的结尾并返回结果。

    Java 8中的Stream 流

    1. map: map方法用于根据作为参数传递的Predicate将集合中的项映射到其他对象。
      List number = Arrays.asList(2,3,4,5);
      List square = number.stream().map(x->x*x).collect(Collectors.toList());
    2. filter: filter方法用于根据作为参数传递的Predicate选择元素。
      List names = Arrays.asList("Reflection","Collection","Stream");
      List result = names.stream().filter(s->s.startsWith("S")).collect(Collectors.toList());
    3. sorted:排序方法用于对流进行排序。
      List names = Arrays.asList("Reflection","Collection","Stream");
      List result = names.stream().sorted().collect(Collectors.toList());

    终端操作:

    1. collect: collect方法用于返回在流上执行的中间操作的结果。
      List number = Arrays.asList(2,3,4,5,3);
      Set square = number.stream().map(x->x*x).collect(Collectors.toSet());
    2. forEach: forEach方法用于遍历流的每个元素。
      List number = Arrays.asList(2,3,4,5);
      number.stream().map(x->x*x).forEach(y->System.out.println(y));
    3. reduce: reduce方法用于将流的元素减少为单个值。
      reduce方法将BinaryOperator作为参数。

      List number = Arrays.asList(2,3,4,5);
      int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);

      这里,ans变量被赋值为0作为初始值,并且i被添加到它。

    程序演示使用Java Stream

    //a simple program to demonstrate the use of stream in java
    import java.util.*;
    import java.util.stream.*;
     
    class Demo
    {
      public static void main(String args[])
      {
     
        // create a list of integers
        List<Integer> number = Arrays.asList(2,3,4,5);
     
        // demonstration of map method
        List<Integer> square = number.stream().map(x -> x*x).
                               collect(Collectors.toList());
        System.out.println(square);
     
        // create a list of String
        List<String> names =
                    Arrays.asList("Reflection","Collection","Stream");
     
        // demonstration of filter method
        List<String> result = names.stream().filter(s->s.startsWith("S")).
                              collect(Collectors.toList());
        System.out.println(result);
     
        // demonstration of sorted method
        List<String> show =
                names.stream().sorted().collect(Collectors.toList());
        System.out.println(show);
     
        // create a list of integers
        List<Integer> numbers = Arrays.asList(2,3,4,5,2);
     
        // collect method returns a set
        Set<Integer> squareSet =
             numbers.stream().map(x->x*x).collect(Collectors.toSet());
        System.out.println(squareSet);
     
        // demonstration of forEach method
        number.stream().map(x->x*x).forEach(y->System.out.println(y));
     
        // demonstration of reduce method
        int even =
           number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);
     
        System.out.println(even);
      }
    }
    

    输出:

    [4, 9, 16, 25]
    [Stream]
    [Collection, Reflection, Stream]
    [16, 4, 9, 25]
    4
    9
    16
    25
    6
     
    转载请保留页面地址:https://www.breakyizhan.com/java/6511.html