深入理解Java8-Stream
微信公众号:朱小猿
山不辞土,故能成其高;海不辞水,故能成其深!
如果你觉得此文章对您有帮助,欢迎关注、转发、点赞[^1]
深入理解Java8-Stream
Stream流
1. 流的构成部分
- 源
- 零个或多个中间操作
- 终止操作
2.流操作的分类
- 惰性求值
- 可以采用链式方式调用,真正调用的时候才会被执行
- 及早求值
- 调用的时候就开始计算结果
3.流的本质
- Collection提供了新的stream()方法
- 流不存储值,通过管道的方式获取值
- 本质是函数式的,对流的操作会生成一个结果,不过并不会修改底层的数据源,集合可以作为流的底层数据源
- 延迟查找,很多流操作(过滤、映射、排序等)都可以实现延迟加载
4.Stream
- 和迭代器不同的是,Stream可以并行化操作,迭代器只能命令式地、串行化操作
- 当使用串行方式去遍历时,每个item读完后在读下一个item
- 使用并行去遍历时,数据会被分成多个段,其中每一个都在不同线程中处理,然后将结果一起输出
- Stream的并行操作依赖于Java7中引入的fork/Join框架
流与迭代器类似点:流是无法重复使用或消费的
中间操作:都会返回一个Stream对象,比如说返回Stream
终止操作:没有Stream对象返回,可能不返回值,也可能返回其他类型的单个值
下面的是我的公众号二维码图片,欢迎关注。