我正在寻找一种可读的方式来重用流操作链。
我的想法是,我有一定的操作序列,我想将其应用于其他操作之间的多个流。流之间的其他操作并不相同。
因此,例如,对于每个流,我想更改字符串的大小写,修剪它,使空字符串无效,然后过滤掉空值,最后消除重复项,如下所示:
在这两种情况下,我都会执行以下操作序列:
.map( String::trim ).map( Strings::emptyToNull ).filter( Objects::nonNull ).distinct()
Run Code Online (Sandbox Code Playgroud)
我目前复制该链并将其放在多个流的其他操作之间:
myStream1.doSomeStuff().map( String::trim ).map( Strings::emptyToNull ).filter( Objects::nonNull ).distinct().doOtherStuff();
myStream2.doSomethingElse().map( String::trim ).map( Strings::emptyToNull ).filter( Objects::nonNull ).distinct().doSomethingElseStill();
Run Code Online (Sandbox Code Playgroud)
有没有好的方法可以避免重写那段代码?显然,两个 map() 操作是可能的,但是有没有办法实现这种操作组合呢?