小编Wol*_*llo的帖子

重用流操作链

我正在寻找一种可读的方式来重用流操作链。

我的想法是,我有一定的操作序列,我想将其应用于其他操作之间的多个流。流之间的其他操作并不相同。

因此,例如,对于每个流,我想更改字符串的大小写,修剪它,使空字符串无效,然后过滤掉空值,最后消除重复项,如下所示:

在这两种情况下,我都会执行以下操作序列:

.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() 操作是可能的,但是有没有办法实现这种操作组合呢?

java java-stream

2
推荐指数
1
解决办法
425
查看次数

标签 统计

java ×1

java-stream ×1