RxJava 中的笛卡尔积
是否有可能在 rxjava 中得到两个可观察量的笛卡尔积?
像这样:
A -> 1,2,3
B -> a,b
A x B -> (1, a), (1, b), (2, a), (2, b), (3, a), (3, b)
是否有可能在 rxjava 中得到两个可观察量的笛卡尔积?
像这样:
A -> 1,2,3
B -> a,b
A x B -> (1, a), (1, b), (2, a), (2, b), (3, a), (3, b)
你想要的是,对于一个数字,像你有字母一样成对。因此,您可以使用和运算符轻松实现这一目标。map
flatMap
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)));
“加入”不是你想要的吗?
Observable<Integer> a = Observable.fromArray(1, 2, 3);
Observable<String> b = Observable.fromArray("a", "b");
Observable<?> left = Observable.never();
Observable<?> right = Observable.never();
Observable<Pair<Integer, String>> pairs = a.join(b, (aa)->left, (bb)->right, (ai, bi)-> Pair.of(ai, bi));