1.流操作
java.util.stream.Stream中的Stream接口定义了很多操作。大致可以分为两大类。
看一段代码
可以看到两类操作
1.1 中间操作
filter、map、limit之类的中间操作会返回另一个流。中间操作一般都可以合并起来,在终端操作时一次性全部处理。
1.2 终端操作
终端操作会从流的流水线上生成结果。返回结果可以是任何值,比如list、integer,甚至是void,比如打印system.out.println或者开启线程。
2.使用流
使用流,一般包括三件事
- 一个数据源(如集合)来执行一个查询
- 一个中间操作链,形成一条流的流水线
- 一个终端操作,执行流水线,并生成结果
流的流水线背后的理念类似于构建器模式。在建造器模式中有一个调用链来设置一套配置(对流来说这就是一个中间操作链),接着是调用build方法(对流来说就是终端操作)
3.总结
- 流是“从支持数据处理操作的源 -> 生成的一系列元素”
- 流通过内部迭代的方式:filter/map/sorted等操作被抽象掉了
- 流操作:中间操作和终端操作
- 中间操作会返回一个流,并可以连接在一起,但是不会产生结果
- 终端操作会返回一个非流的值,并处理流水线返回结果