引入背景:
1、想像写SQL那样操作集合
2、为了提高性能,需要并行处理,并利用多核架构
流到底是什么呢?
流是Java API的新成员,它允许你 以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现),此外,流还可以 透明地并行处理,你无需写任何多线程代码了!
简短的定义就是 “从支持数据处理操作的源 生成的 元素序列”
- 源——流会使用一个提供数据的源,如集合、数组或输入/输出资源。请注意,从有序集合生成流时会保留原有的顺序。由列表生成的流,其元素顺序与列表一致。
- 数据处理操作——流的数据处理功能支持类似于数据库的操作
- 元素序列——就像集合一样,流也提供了一个接口,可以访问特定元素类型的一组有序值。
- 内部迭代——与使用迭代器显式迭代的集合不同,流的迭代操作是在背后进行的
- 流水线——很多流操作本身会返回一个流,这样多个操作就可以链接起来,形成一个大的流水线
流好处:
1、声明性——更简洁,更易读。代码是以声明性方式写的:说明想要完成什么(筛选热量低的菜肴)而不是说明如何实现一个操作(利用循环和if条件等控制流语句)。
2、可复合——更灵活。你可以把几个基础操作链接起来,来表达复杂的数据处理流水线
3、可并行——性能更好。 filter、sorted、map和collect等操作是与具体线程模型无关的高层次构件,所以它们的内部实现可以是单线程的,也可能透明地充分利用你的多核架构!在实践中,这意味着你用不着为了让某些数据处理任务并行而去操心线程和锁了,StreamAPI都替你做好了!
-----------------------------------------------------------------------------以上全部读书笔记摘自 书名:Java 8实战 作者:[英] Raoul-Gabriel Urma [意] Mario Fusco [英] Alan M