类是否有助于在 Java 17 中创建管道?我想通过多个步骤将原始内容提炼为精细的对象

问题描述 投票:0回答:1

我有一个流程,开始读取原始文档,然后删除其不可用的部分,然后提取其章节,进行一些检测,提取特定内容等。

  1. 在我看来,实现此类管道的基本方法是使用streams

    A
    D
    对象的专用函数,代表实现的细化步骤:
    Stream<A>
    Stream<B>
    Stream<C>
    Stream<D>
    ,最后返回
    D

  2. 对我来说看起来更干净的一种方法是使用functions

    Supplier<A>
    A
    Function<A,B>
    Function<B,C>
    Function<C,D>
    ,然后返回
    D

但是 Java 的最新版本是否提供了更方便的结构性通用类来帮助创建管道?
例如,将它们视为线程,允许在失败的步骤之一中取消一个管道......或者它提供的任何有用的帮助。

通过互联网和S.O.阅读,我发现有一次,在2010年左右,出现了一种管道模式,但我看到它是用文本而不是代码描述的。

java pipeline
1个回答
0
投票

您可以从

java.util.funtion.Function
创建流并使用
andThen
方法链接它们

// declaring all pipelines
UnaryOperator<String> pipeline0 = s ->  s+= "-0";
UnaryOperator<String> pipeline1 = s ->  s+= "-1";
UnaryOperator<String> pipeline2 = s ->  s+= "-2";
UnaryOperator<String> pipeline3 = s ->  s+= "-3";
UnaryOperator<String> pipeline4 = s ->  s+= "-4";

// chain pipelines
String outputPipeline = pipeline0
                            .andThen(pipeline1)
                            .andThen(pipeline2)
                            .andThen(pipeline3)
                            .andThen(pipeline4)
                            .apply("string-input"); // call then with inital value
              
// print result          
System.out.println(outputPipeline); // it will print string-input-0-1-2-3-4

java.util.funtion.UnaryOperator<String>
java.util.funtion.Function<String,String>

相同
© www.soinside.com 2019 - 2024. All rights reserved.