RxJava:合并BehaviorSubjects

use*_*821 1 android java-8 rx-java rx-java2

如何合并两个BehaviorSubjects,使它们表现得像一个BehaviorSubject

我有这样的事情:

class Solution {
    public static void main(String[] args) {
        Subject<List<Integer>> left = BehaviorSubject.createDefault(Arrays.asList(1, 2, 3));
        Subject<List<Integer>> right = BehaviorSubject.createDefault(Arrays.asList(4, 5, 6));
        Single<List<Integer>> merged = left.mergeWith(right).reduce(new ArrayList<Integer>(), (l, r) -> {
            List<Integer> merged1 = new ArrayList<>(l.size() + r.size());
            merged1.addAll(l);
            merged1.addAll(r);
            return merged1;
        });
        merged.subscribe(System.out::println);
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望得到一些东西[1, 2, 3, 4, 5, 6],但subscribe什么都不打印.

Rin*_*nor 5

这应该工作;)

Subject<List<Integer>> left = BehaviorSubject.createDefault(Arrays.asList(1, 2, 3));
Subject<List<Integer>> right = BehaviorSubject.createDefault(Arrays.asList(4, 5, 6));
Observable<List<Integer>> merged = Observable.zip(left, right, (value1, value2) -> {
    List<Integer> list = new ArrayList<>();
    list.addAll(value1);
    list.addAll(value2);
    return list;
});
merged.subscribe(System.out::println);
Run Code Online (Sandbox Code Playgroud)