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

1.3 KiB
Raw Permalink Blame History

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 等中间操作会返回另一个流

终端操作

foEachcount 返回Voidlong类型从流的流水线产生结果

使用流

  1. 一个数据源(集合)来执行一个查询
  2. 一个中间操作链,形成一条流的流水线
  3. 一个终端操作,执行流水线,并能生成结果