RxJava中的笛卡尔积

nmi*_*lov 13 java rx-java

是否有可能在rxjava中获得两个Observable的笛卡尔积?

像这样的东西:

A -> 1,2,3
B -> a,b
A x B -> (1, a), (1, b), (2, a), (2, b), (3, a), (3, b)
Run Code Online (Sandbox Code Playgroud)

dwu*_*sen 13

你想要的是为一个数字生成一对,就像你有字母一样.因此,您可以轻松地使用mapflatMap运算符.

    Observable<Integer> number = Observable.from(Arrays.asList(1, 2, 3));
    Observable<String> letters = Observable.from(Arrays.asList("a", "b"));

    Observable<Pair> cartesian = number.flatMap((n) -> letters.map((l) -> new Pair(n, l)));
Run Code Online (Sandbox Code Playgroud)