Java 8 中的 Stream

问自己:
使用,会了
源码,看了一部分

参考:
巧用Java8中的Stream,让集合操作飞起来!

始于:

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() 开始稀里糊涂呀,找个资料再看吧。

你可能感兴趣的:(Java 8 中的 Stream)