Files
Hui-s-notebook/流.md
2023-09-10 10:50:53 +08:00

62 lines
1.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Java API 新成员,允许以声明性方式处理数据(通过查询语句表达,非临时编写一个实现)
## 流是什么
通过parallelStream()多线程执行
```java
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**
返回Voidlong类型从流的流水线产生结果
### 使用流
1. 一个数据源(集合)来执行一个查询
2. 一个中间操作链,形成一条流的流水线
3. 一个终端操作,执行流水线,并能生成结果