什么是流?
流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。流还可以透明的并行处理,你无需写任何多线程代码了。
流的定义:从支持数据处理操作的源生成的元素序列。
- 元素序列:就像集合一样,流也提供了一个接口,可以访问特定元素类型的一组有序值。容器和流区别在于,容器是用于存储和访问元素,流在于计算。
- 源:流会使用一个提供数据的源,如集合、数组或输入/输出资源。
- 数据处理操作:流的数据处理功能支持类似于数据库的操作,以及函数式编程语言中 的常用操作,如filter、map、reduce、find、match、sort等。流操作可以顺序执行,也可并行执行。
流的两个特点:1.很多流操作本身会返回一个流,可以形成一个流水线。2.流的迭代操作是在背后进行的。
filter
接收lambda,从流中排除某些元素。
map
接收lambda,将元素转成其他形式或提取信息。
limit
截断流,使元素不超过给定数量。
collect
将流转成其他形式。
记住流只能消费一次!
流的使用包含三件事:
- 一个数据源(如集合)来执行一个查询;
- 一个中间操作链,形成一条流的流水线;
- 一个终端操作,执行流水线,并能生成结果。
中间操作
终端操作