深入理解Java8-Stream

微信公众号:朱小猿
山不辞土,故能成其高;海不辞水,故能成其深!
如果你觉得此文章对您有帮助,欢迎关注、转发、点赞[^1]

深入理解Java8-Stream

Stream流

1. 流的构成部分

  • 零个或多个中间操作
  • 终止操作

2.流操作的分类

  • 惰性求值
    • 可以采用链式方式调用,真正调用的时候才会被执行
  • 及早求值
    • 调用的时候就开始计算结果

3.流的本质

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

4.Stream

  • 和迭代器不同的是,Stream可以并行化操作,迭代器只能命令式地、串行化操作
  • 当使用串行方式去遍历时,每个item读完后在读下一个item
  • 使用并行去遍历时,数据会被分成多个段,其中每一个都在不同线程中处理,然后将结果一起输出
  • Stream的并行操作依赖于Java7中引入的fork/Join框架

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

中间操作:都会返回一个Stream对象,比如说返回Stream

终止操作:没有Stream对象返回,可能不返回值,也可能返回其他类型的单个值

下面的是我的公众号二维码图片,欢迎关注。
深入理解Java8-Stream