jdk1.8数据流stream的使用

  先举个例子

List<RetailOrderItemDto> filterItems = dto.getRetailOrderItems().stream().filter(e->e.getMachineBarCode()!=null).collect(Collectors.toList());

  其实Stream是元素的集合,这点让Stream看起来用些类似Iterator;同时Stream也可以支持顺序和并行的对原Stream进行汇聚的操作;如上面的语句,可以分割为“创建Stream”、“转换Stream”、“聚合”三个板块。


创建Stream板块dto.getRetailOrderItems().stream()
转换Stream板块filter(e->e.getMachineBarCode()!=null)
聚合板块collect(Collectors.toList)


  其中聚合分为两种:可变汇聚其它汇聚

可变汇聚:把输入的元素们累积到一个可变的容器中,比如Collection或者StringBuilder;

其它汇聚:除去可变汇聚剩下的,一般都不是通过反复修改某个可变对象,而是通过把前一次的汇聚结果当成下一次的入参,反复如此。比如reduce,count,allMatch;
reduce:reduce方法非常的通用,后面介绍的count,sum等都可以使用其实现
①、Optional<T> reduce(BinaryOperator<T> accumulator);
reduce方法接受一个函数,这个函数有两个参数,第一个参数是上次函数执行的返回值(也
称为中间结果),第二个参数是stream中的元素,这个函数把这两个值相加,得到的和会被
赋值给下次执行这个函数的第一个参数。
②、T reduce(T identity, BinaryOperator<T> accumulator);
它允许用户提供一个循环计算的初始值,如果Stream为空,就直接返回该值。而且这个方法
不会返回Optional,因为其不会出现null值。
allMatch:是不是Stream中的所有元素都满足给定的匹配条件
anyMatch:Stream中是否存在任何一个元素满足匹配条件
findFirst: 返回Stream中的第一个元素,如果Stream为空,返回空Optional
noneMatch:是不是Stream中的所有元素都不满足给定的匹配条件
max和min:使用给定的比较器(Operator),返回Stream中的最大|最小值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值