1.3 KiB
1.3 KiB
Java API 新成员,允许以声明性方式处理数据(通过查询语句表达,非临时编写一个实现)
流是什么
通过parallelStream()多线程执行
List<String> lowCaloricDishesName=
menu.parallelStream()
.filter(d-> d.getCalories() < 400)
.sorted(comparing(Dishes::getCalories))
.map(Dish::getName)
.collect(toList());
- 代码以声明性方式写的,说明想要完成什么,而不是说明如何实现一个操作
- 可以把几个基础操作链接起来,来表达复杂的数据处理流水线
特点:
- 声明性
- 可复合
- 可并行
流是什么?
- 元素序列
- 源
- 数据处理操作
- 流水线
- 内部迭代
流与集合
只能遍历一次
流只能遍历一次,遍历之后,就被消费掉了
外部迭代和内部迭代
Collection接口需要用户迭代,成为外部迭代。 Stream库使用内部迭代,帮你把迭代做了,还把得到的值存在某个地方
流操作
中间操作
filter, sorted 等中间操作会返回另一个流
终端操作
foEach,count, 返回Void,long类型,从流的流水线产生结果
使用流
- 一个数据源(集合)来执行一个查询
- 一个中间操作链,形成一条流的流水线
- 一个终端操作,执行流水线,并能生成结果