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
扫描二维码添加微信 
  • ,每次淘宝领取淘宝优惠券,淘宝购物更优惠。现在添加微信,还可以领取机械键盘50元优惠券!添加微信后回复机械键盘即可领取!
    支持我们,就用微信淘宝!