Stream基础知识整理:特性-生命周期-执行-Collector

本文深入探讨了Java Stream的特性,包括不存储元素、不改变源对象和延迟执行。详细介绍了Stream的生命周期,从创建、中间操作到终端操作。讲解了顺序流与并行流的执行原理,并剖析了FunctionalInterface与Collector接口的使用,包括归集、统计、分组、接合等多种实用操作。同时,文章还分享了学习Stream同步执行的设计逻辑。
摘要由CSDN通过智能技术生成

Stream特性

        1)不存储元素:元素通过Spliterator来遍历获取

        2)不改变源对象:返回持有结果新的Stream

        3)操作延迟执行:在需要结果的时候执行

Stream生命周期

        Stream的生命周期:创建-->中间操作-->终端操作(终止操作)

        1)创建

        集合获取:Collection.stream()

        数组创建:Arrays.stream(new String[2])

        数值创建:Stream.of(1,2,3)

        生成:Stream.generate(Supplier<T> s),属于无限流,需设定停止条件

        迭代:Stream.iterate(final T seed, final UnaryOperator<T> f),属于无限流,需设定停止条件。UnaryOperator继承Function,输入和输出属同类型,输入是前一个的输出。

        连接:Stream.concat(Stream<? extents T> a, Stream<? extents T> b),两个Stream连接一起生成新的Stream。

        Stream也提供了Builder方式创建,如:Stream.builder().add(1).add(2).build()

        2)中间操作

        中间操作分为两大类:无状态操作(StatelessOp)、有状态操作(StatefulOp)

        StatelessOp:filter\map\mapToInt\mapToLong\mapToDouble

                                \flatMap\flatMapToInt\flatMapToLong\flatMapToDouble\peek

        StatefulOp:distinct\sorted\limit\skip

        3)终端操作

        终端操作有:ForEachOp、MatchOp、FindOp、ReduceOp和toArray\collect\count

        ForEachOp:forEach\forEachOrdered

        MatchOp:anyMatch\allMatch\noneMatch

        FindOp:findFirst\findAny

        ReduceOp:reduce\min\max

Stream执行

        1) 顺序流

        同步执行,在当前线程执行,不做线程转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值