问自己:
使用,会了
源码,看了一部分
始于:
Java 8 新特性
基于:
Lambda 表达式
优势:对集合对象功能的增强,专注于对集合对象进行各种高效、便利的聚合操作或者批量的数据操作,提高编程效率和代码可读性。
原理:
将要处理的元素看作一种流,流在管道中传输,并且可以在管道的节点上处理,包括过滤筛选、去重、排序、聚合等。元素流在管道中经过中间操作的处理,最后由最终操作得到前面处理的结果。
生成方式:
- stream() - 为集合创建串行流
- parallelSteam() - 为集合创建并行流
常用方法:
-
filter() - 筛选
-
map() - 转化
-
distinct() - 去重,需要重写 equals 和 hashCode 方法
-
sorted() - 排序,compare
-
limit() - 限制返回个数
-
skip() - 跳过元素
-
reduce() - 聚合
-
min() & max() - 求最小值
-
anyMatch() && allMatch() && noneMatch() - 匹配
源码:
Collection(接口),定义了 stream() & parallelStream() 方法,具有默认实现,调用 StreamSupport 接口定义的 stream() 方法,返回 Stream 类型结果。
StreamSupport 接口定义的 stream() 方法,其中之一,第一个参数 Spliterator spliterator() 还不清楚做什么,第二个参数 parallel 是否并行。
Stream() 方法中 调用了 ReferencePipeline 的 head() 开始稀里糊涂呀,找个资料再看吧。
网友评论