Stream API
数据源 :集合,数组等
一系列流水线式的中间操作,产生新流,原来的数据源不会改变。
数据渠道,用于操作数据源所生成的元素序列。
注意:
1 Stream 自己不会储存元素
2 Stream 不会改变源对象。将返回一个有结果的新stream。
3 Stream 操作是延迟执行的。 他们会等到需要结果的时候才执行。惰性求值
Stream 操作步骤:
创建Stream :数据源
中间操作 ; 操作链,对数据源的数据进行处理
终止操作 : 执行中间操作链,产生结果
Stream 的中间操作
筛选与切片
* filter -- 接收lambda, 从流中排除某些元素。
* limit -- 截断流 , 使其元素不超过给定数量
* skip(n) -- 跳过元素, 返回一个扔掉l前n个元素的流,若流中元素不足n个,返回一个空流。与limit(n) 互补
* distinct -- 筛选 通过流所产生元素的hashcode() 和 equals() 去除重复元素
外部迭代
limit
skip
distinct:去重 需要重写对象的hashcode 和equals 方法
映射
map -- 接收lambda,将元素转化为其他形式或提取信息。接收一个函数作为参数,该函数会被应 用到每个元素上,并将其映射成一个新的元素。
flatMap -- 接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流。
map
flapMap :将所有流连接成一个流