- Stream流
- 根据数据源所产生的的元素序列
- 数据源: 集合,数组 ---> 侧重点在数据的存储
- stream流: -->关注数据的计算
- 注意:
- 流本身不能存储数据
- 流不能修改数据源中的数据
- 流是一次性的流,流是式操作的每一步都会返回一个持有结果的新流
- 延迟执行|惰性加载 : 当不进行终止行为时候,不会执行流式中间操作
- 过程:
- 获取|创建stream
- 顺序流:
- Stream<Integer> stream = list.stream();
- 顺序流:
- 获取|创建stream
并行流:
Stream<Integer> stream2 = list.parallelStream();
-
-
- 流式中间操作
- 筛选和切片
- filter-接收Lambda,从流中排除某些元素
- limit-截断流,使其元素不超过给定数量
- skip-跳过元素,返回一个扔掉了前n个元素的流,若流中元素不足n个,则返回一个空流。
- distinct-筛选,通过流所生产元素的hashCode()和equals()去除重复元素
- 排序:
- sorted(Comparable)-自然排序
- sorted(Comparator)-定制排序
- 映射:
- map : 将stream操作的每一个元素都作用与实参传递的函数,映射一个结果,返回操作结果的流
- flatMap : 将stream操作的每一个元素都作用与实参传递的函数,映射一个结果,结果必须为一个流,最终返回所有结果流结合以后的一个流
- 筛选和切片
- 终止行为(返回的结果不在是stream)
- 查找与匹配
- findAny-返回当前流中的任意元素
- count-返回流中元素的总个数
- max()
- 收集 collect()
- 查找与匹配
- 流式中间操作
-