java8 Stream 笔记

stream的定义:对一个源中的一系列元素进行聚合操作。

一系列元素:stream对一组有特定类型的元素提供了一个接口。但是stream并不真正存储元素,元素根据需求被计算出来。

:stream可以处理任何一种数据提供源,比如集合、数组、IO资源。

聚合操作:stream支持类似sql一样的操作,常规的操作类似函数试语言,比如filter,map,reduce,find,match,sorted等。

 

stream还有两个特性使它和collection不同:

管道:许多stream操作会返回一个stream对象本身。这就允许所有的操作可以链接起来形成一个更大的管道。这就可以进行特定优化比如懒加载和短回路

内部迭代:和集合的显示迭代(外部迭代)相比,stream操作不需要我们手动进行迭代。

 

stream的操作包括如下三个东西:

一个需要进行数据查询的数据源;

一连串组成管道的中间操作;

一个执行管道并产生结果的终结操作。

 

stream提供了操作分为如下四类:

过滤

  filter (Predicate): 使用一个谓词java.util.function.Predicate作为参数返回一个满足谓词条件的stream

  distinct: 返回一个没有重复元素的stream(根据equals的实现)

  limit(n): 返回一个不超过给定长度的stream

  skip(n):返回一个忽略前n个的stream

查找和匹配

  一个通常的数据处理模式是判断一些元素是否满足给定的属性,可以使用anyMatch, allMatch, noneMatch操作来帮助你实现

映射

  stream支持map方法,map使用一个函数作为一个参数,你可以使用map从stream的一个元素里提取信息。

 

posted on 2018-03-02 15:30  zhaofeng555  阅读(145)  评论(0编辑  收藏  举报