Stream的操作

Posted flying-snake

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Stream的操作相关的知识,希望对你有一定的参考价值。

中间操作

map()

返回一个流,当中包含了将给定函数应用到当前流中的每一个元素后返回的结果。

只有一种实现,在 ReferencePipeline 中定义

创建一个 StatelessOp(ReferencePipeline 的内部类),重写 opWrapSink(定义在 AbstractPipeline 中) 方法后返回

opWrapSink 方法创建 Sink.ChainedReference,重写 accept 方法,并返回

public final <R> Stream<R> map(Function<? super P_OUT, ? extends R> mapper) {
    Objects.requireNonNull(mapper);
    return new StatelessOp<P_OUT, R>(this, StreamShape.REFERENCE, StreamOpFlag.NOT_SORTED | StreamOpFlag.NOT_DISTINCT) {
        @Override
        Sink<P_OUT> opWrapSink(int flags, Sink<R> sink) {
            return new Sink.ChainedReference<P_OUT, R>(sink) {
                @Override
                public void accept(P_OUT u) {
                    downstream.accept(mapper.apply(u));
                }
            };
        }
    };
}

 

以上是关于Stream的操作的主要内容,如果未能解决你的问题,请参考以下文章

全面吃透JAVA Stream流操作,让代码更加的优雅

从Node.js Stream写入多个文件

VSCode自定义代码片段——git命令操作一个完整流程

Stream01 定义迭代操作惰性求值

深度掌握 Java Stream 流操作,让你的代码高出一个逼格!

Laravel:stream_socket_enable_crypto():SSL操作失败,代码1 [重复]