java8中的Stream流API
1.理解
java8中stream时对数据源进行一系列的操作,最终返回一个流
stream
- 不会储存数据
- 不改变源数据
- 操作是延迟执行的,会等到需要结果的时候才执行
2.操作步骤
- 创建Stream
- 中间对数据的操作
- 终止操作
3.创建流
3.1 通过Collection提供的方法
3.1.1 stream()方法
串行流
3.1.2 parallelStream()方法
并行流
3.2 通过Arrays的stream()方法
3.3 通过Stream类中的静态方法of()
3.4 无限流
3.4.1 迭代
按照初始值为0和+2的运算规则,无限创建
3.4.2 生成
使用供给型函数接口,无限生成随机数
4.中间操作
中间操作只有在终止操作执行时一次性全部处理
4.1筛选和切片
4.2映射
将每个字符都大写
将employees集合中的每个元素都进行一次getName的操作
flatMap是将所有元素都抽取出来统一放到一个流中
4.3 排序
自然排序
自定义排序
5.终止操作
5.1 allMatch
5.2 anyMatch
5.3noneMatch
5.4 findFirst
返回一个optional容器
5.5 findAny
5.6 count
5.7 max
5.8 min
5.9 归约 reduce
给定一个初始值,将集合中元素求和
没有起始值的reduce为防止返回值为空,返回值类型为optional
求公司中所有员工的工资总和
map与reduce的结合被称为map-reduce模式
5.10 收集 collect
传入类型为collector,可以用collecetors工具类调用静态方法传入
返回所有员工的姓名,并封装到list中。
l利用set特性去重
传入特定集合
其余方法:
总数
平均值
总和
最大值
最小值
分组
多级分组
根据条件分区,满足条件和不满足条件
字符拼接
三个参数分别为分割,最前面,最后面的字符