Stream 流
Stream
流由三部分组成:
- 源
- 零个或多个中间操作
- 终止操作
流操作的分类:
- 惰性求值
- 及早求值
- 流提供了新的stream()方法
- 流不存储值,通过管道的方式获取值
- 本质是函数式的,对流的操作会产生一个结果,不过并不会修改底层的数据源,集合可以作为流的底层数据源
- 延迟查找,很多流操作(过滤、映射、排序等)都可以延迟实现
集合关注的是数据与数据存储本身
流关注的则是对数据的计算
流与迭代器类似的一点是:流是无法重复使用和消费的。
中间操作都会返回一个Stream对象
中止操作则不会返回Stream类型,可能不返回值,也可能返回其他类型的单个值。
ReferencePipeline表示流的源阶段与中间阶段
ReferencePipeline.Head表示流的源阶段
二者在大部分属性的设定上是类似的,但存在一些属性是不同的,比如说Head是没有previousStage的,而ReferencePipeline则是存在previousStage的,等等。