java笛卡尔积inRxJava
现在我持有一个Observable<Observable<Integer>
,如何将它转换成包含n元笛卡尔积的Observable<int[]>
例如:
Observable<Observable<Integer> ob = Observable.just(
Observable.just(0,1),
Observable.just(2,3),
Observable.just(4,5)
);
ob...... -> (0,2,4), (0,3,4), (0,2,5), (0,3,5), (1,2,4), (1,3,4), (1,2,5), (1,3,5)
# 1 楼答案
我可以自己解决。但还有更优雅的方式吗
(用
toArray
方法将Observable<T>
转换为T[]
)# 2 楼答案
以异步方式创建笛卡尔积是困难的,或者在某种意义上是不可能的。如果阻塞是可以的,你可以这样做
可以改进此代码以避免阻塞,但仍然需要缓存来自所有
Observable
的所有结果,代码将更加复杂。最有可能的是,阻塞对你来说是不可接受的,无论如何,试图得到笛卡尔积是个坏主意# 3 楼答案
首先,您需要固定数量的输入
Observable
。其次,不需要阻塞,但可能需要缓存,因为第二、第三等Observable
需要多次使用