jdk8 流操作

二、流

2.1 流介绍

流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。就现在来说,你可以把它们看成遍历数据集的高级迭代器。此外,流还可以透明地并行处理,你无需写任何多线程代码了!

2.2 使用流

类别方法名方法签名作用
筛选切片filterStream<T> filter(Predicate<? super T> predicate)过滤操作,根据Predicate判断结果保留为真的数据,返回结果仍然是流
 distinctStream<T> distinct()去重操作,筛选出不重复的结果,返回结果仍然是流
    
 limitStream<T> limit(long maxSize)截取限制操作,只取前 maxSize条数据,返回结果仍然是流
    
 skipStream<T> skip(long n)跳过操作,跳过n条数据,取后面的数据,返回结果仍然是流
    
映射map<R> Stream<R> map(Function<? super T, ? extends R> mapper)转化操作,根据参数T,转化成R类型,返回结果仍然是流
 flatMap<R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper)转化操作,根据参数T,转化成R类型流,这里会生成多个R类型流,返回结果仍然是流
    
匹配anyMatchboolean anyMatch(Predicate<? super T> predicate)判断是否有一条匹配,根据Predicate判断结果中是否有一条匹配成功
 allMatchboolean allMatch(Predicate<? super T> predicate)判断是否全都匹配,根据Predicate判断结果中是否全部匹配成功
    
 noneMatchboolean noneMatch(Predicate<? super T> predicate)判断是否一条都不匹配,根据Predicate判断结果中是否所有的都不匹配
    
查找findAnyOptional<T> findAny()查找操作, 查询当前流中的任意元素并返回Optional
 findFirstOptional<T> findFirst()查找操作, 查询当前流中的第一个元素并返回Optional
    
归约reduceT reduce(T identity, BinaryOperator<T> accumulator);归约操作,同样两个类型的数据进行操作后返回相同类型的结果。比如两个整数相加、相乘等。
 maxOptional<T> max(Comparator<? super T> comparator)求最大值,根据Comparator计算的比较结果得到最大值
    
 minOptional<T> min(Comparator<? super T> comparator)求最小值,根据Comparator计算的比较结果得到最小值
    
汇总统计collect<R, A> R collect(Collector<? super T, A, R> collector)汇总操作,汇总对应的处理结果。这里经常与
 countlong count()统计流中数据数量
    
遍历foreachvoid forEach(Consumer<? super T> action)遍历操作,遍历执行Consumer 对应的操作

上面是Stream API的一些常用操作,按场景结合lambda表达式调用对应方法即可。至于Stream的生成方式,Stream的of方法或者Collection接口实现类的stream方法都可以获得对应的流对象,再进一步根据需要做对应处理。

另外上述方法如果返回是Stream对象时是可以链式调用的,这个时候这个操作只是声明或者配方,不产生新的集合,这种类型的方法是惰性求值方法;有些方法返回结果非Stream类型,则是及早求值方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值