我正在使用 Reactor 2.0.0.M1,我正在尝试过滤一个Stream
. 根据我的布尔运算的结果,我想继续使用一个或另一个流。该otherwise()
功能似乎可以做到这一点,但不清楚如何使用它。
我的流看起来像这样:
stream.filter(o -> o.isValid());
为了处理正确的情况o.isValid()
,我的理解是我可以打电话.map()
继续顺流而下。
为了处理错误的情况o.isValid()
,我可以访问备用.otherwise()
流。
但似乎没有一种or()
或类似的方法,因此似乎不可能以完全流畅的方式配置两个流。
我能想到的最好的是这样的:
FilterAction<Object> filterAction = stream.filter(o -> o.isValid());
// Returns a 'true' Stream, which might additional operations
filterAction
.map(o -> trueOperation1(o))
.map(o -> trueOperation2(o));
// Returns a 'false' Stream, which might different additional operations
filterAction.otherwise()
.map(o -> falseOperation1(o))
.map(o -> falseOperation2(o));
这真的是最好的方法吗?