Stream

Stream 流

Stream

流由三部分组成:

  1. 零个或多个中间操作
  2. 终止操作

流操作的分类:

  1. 惰性求值
  2. 及早求值
  • 流提供了新的stream()方法
  • 流不存储值,通过管道的方式获取值
  • 本质是函数式的,对流的操作会产生一个结果,不过并不会修改底层的数据源,集合可以作为流的底层数据源
  • 延迟查找,很多流操作(过滤、映射、排序等)都可以延迟实现

集合关注的是数据与数据存储本身
流关注的则是对数据的计算

流与迭代器类似的一点是:流是无法重复使用和消费的。

中间操作都会返回一个Stream对象
中止操作则不会返回Stream类型,可能不返回值,也可能返回其他类型的单个值。

ReferencePipeline表示流的源阶段与中间阶段
ReferencePipeline.Head表示流的源阶段
二者在大部分属性的设定上是类似的,但存在一些属性是不同的,比如说Head是没有previousStage的,而ReferencePipeline则是存在previousStage的,等等。