概述
Stream API 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用fork/join并行方式来拆分任务和加速处理过程。总得来说,Stream API 就是提供了一种高效且易于使用的处理数据的方式。
注:需要会使用 Lambda 表达式 地址
Stream 的流
Stream 不是集合元素,它不是数据结构并不保存数据,而属于流。
流是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。
区别:集合注重的是数据的保存,而流注重的是数据的计算
Stream 流的特点:
- 不会存储元素
- 不会改变源对象
- 操作是延迟执行的
流的使用步骤:
- 获取一个数据源
- 数据转换,即中间操作
- 执行操作获取想要的结果并终止操作
通过数据源创建 Stream 流
1.Collection
List<String> list = new ArrayList<>();
Stream<String> stream1 = list.stream();
Stream<String> stream2 = list.parallelStream();
注:parallelStream获取的是并行执行的流,底层使用的是 ForkJoin框架
2.数组
Stream<T> stream3 = Arrays.stream(T array);//int,long,double
3.值
Stream<String> stream4 = Stream.of("a","b","c");
4.函数(无限流)
Stream<Integer> stream5 = Stream.iterate(0, (x) -> x + 2);
Stream<String> stream6 = Stream.generate(() -> Math.random(