Java 11:如何总结两个单一<;可选<&燃气轮机&燃气轮机;在爪哇?

Java 11:如何总结两个单一<;可选<&燃气轮机&燃气轮机;在爪哇?,java,stream,rx-java,optional,java-11,Java,Stream,Rx Java,Optional,Java 11,请帮忙,如何总结Java11中的两个单子 我正在使用RxJava,但我认为它没有任何意义 例如: Single<Optional<MonetaryAmount>> first = someMethod1(a, b); Single<Optional<MonetaryAmount>> second = someMethod2(a, b); singlefirst=someMethod1(a,b); 单秒=方法2(a,b); 我想做这样的事情,不是

请帮忙,如何总结Java11中的两个单子


我正在使用RxJava,但我认为它没有任何意义

例如:

Single<Optional<MonetaryAmount>> first = someMethod1(a, b);
Single<Optional<MonetaryAmount>> second = someMethod2(a, b);
singlefirst=someMethod1(a,b);
单秒=方法2(a,b);
我想做这样的事情,不是从语法上,而是从逻辑上

Single<Optional<MonetaryAmount>> result = first + second;
单个结果=第一个+第二个;
我尝试过这样做,但在Java11中不起作用

Single<Optional<MonetaryAmount>> result = Stream.concat(first, second)
                                                .reduce(MonetaryAmount::sum);
Single result=Stream.concat(第一,第二)
.减少(货币金额:总和);

您有什么想法吗?

使用
concatMapSingle
map optional
获得当前值:

Observable<Single<Optional<MonetaryAmount>>> amounts = 
    Observable.fromArray(first, second);

amounts.concatMapSingle(v -> v)
.mapOptional(v -> v) // RxJava 3
.reduce(MonetaryAmount::sum)
;

你为什么期望你的尝试能成功?什么能让它工作呢?“我正在使用RxJava,但我认为它没有任何意义。”-当然有。这意味着您必须理解rxJava中的和的概念
.filter(Optional::isPresent)
.map(Optional::get)