流Stream其实就是数据渠道,用于操作数据源(集合,数组等)所生成的元素序列,集合是数据,流就是计算,把数据经过一系列流水线式的中间操作以后产生一个新流 。1)stream不会自己存储元素 ,2)stream不会改变源对象 3)stream操作是延迟的执行的,这意味着他们会等到需要结果时才执行(后面代码演示)。
Stream操作的三个步骤:
1.创建Stream:创建数据源(集合,数组等),获取一个流
2.中间操作:一个中间操作链,对数据源的数据进行处理
3.终止操作:一个终止操作,执行中间操作链,产生结果
//1. Collection 提供了两个方法 stream() 与 parallelStream()
List<String> list = new ArrayList<>();
Stream<String> stream = list.stream(); //获取一个顺序流
Stream<String> parallelStream = list.parallelStream(); //获取一个并行流
//2. 通过 Arrays 中的 stream() 获取一个数组流,参数可以是任意类型的数组
Integer[] nums = new Integer[10];
Stream<Integer> stream1 = Arrays.stream(nums);
//3. 通过 Stream 类中静态方法 of()
Stream<Integer> stream2 = Stream.of(1,2,3);
//4. 创建无限流
//迭代 一元运算+2无限进行,可以用limit限制次数
Stream<Integer> stream3 = Stream.iterate(0, (x) -> x + 2);
stream3.forEach(System.out::println);
//生成
Stream<Double> stream4 = Stream.generate(Math::random).limit(2);
stream4.forEach(System.out::println);