Rx java - 困难的情况 [英] Rx java - difficult case
本文介绍了Rx java - 困难的情况的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设
Observable
我需要一个序列,其中每个 偶数 obs
乘以 obs
中偶数的数量,以及 obs
中的每个 奇数 obs
乘以奇数 个数.
I need a sequence, where each even number of obs
multiplied by count of even numbers in obs
, and each odd number of obs
multiplied by count of odd numbers in obs
.
即在给定的情况下,有 2 个偶数和 3 个奇数,所以结果序列必须是
I.e. in given case there are 2 evens and 3 odds, so result sequence must be
3 (1 * 3)
4 (2 * 2)
9 (3 * 3)
8 (4 * 2)
15 (5 * 3)
我该怎么做?
推荐答案
这对我有用.
Observable<Integer> obs = Observable.just(1, 2, 3, 4, 5);
Observable<Integer> evenCount = obs.filter(integer -> integer % 2 == 0);
Observable<Integer> oddCount = obs.filter(integer -> integer % 2 != 0);
obs.flatMap(
integer -> {
if (integer % 2 == 0) {
return evenCount.count().map(count -> count * integer).toObservable();
} else {
return oddCount.count().map(count -> count * integer).toObservable();
}
}
).subscribe(
s -> Log.v("", "answer -> " + s),
error -> error.printStackTrace()
);
这篇关于Rx java - 困难的情况的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文