Android RxJava:合并行为子对象

Android RxJava:合并行为子对象,android,java-8,rx-java,rx-java2,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<

如何合并两个
BehaviorSubject
s,使它们的行为像一个
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);
    }
}
类解决方案{
公共静态void main(字符串[]args){
Subject left=BehaviorSubject.createDefault(Arrays.asList(1,2,3));
Subject right=BehaviorSubject.createDefault(Arrays.asList(4,5,6));
Single merged=left.mergeWith(right).reduce(新的ArrayList(),(l,r)->{
List merged1=新数组列表(l.size()+r.size());
合并1.添加全部(l);
合并1.添加全部(r);
返回合并1;
});
merged.subscribe(System.out::println);
}
}
我希望得到一些东西,
[1,2,3,4,5,6]
,但是
订阅
不会打印任何东西。

这应该行得通;)

Subject left=BehaviorSubject.createDefault(Arrays.asList(1,2,3));
Subject right=BehaviorSubject.createDefault(Arrays.asList(4,5,6));
Observable合并=obbservable.zip(左、右,(value1、value2)->{
列表=新的ArrayList();
列表。添加全部(值1);
列表。添加全部(值2);
退货清单;
});
merged.subscribe(System.out::println);
这应该可以用;)

Subject left=BehaviorSubject.createDefault(Arrays.asList(1,2,3));
Subject right=BehaviorSubject.createDefault(Arrays.asList(4,5,6));
Observable合并=obbservable.zip(左、右,(value1、value2)->{
列表=新的ArrayList();
列表。添加全部(值1);
列表。添加全部(值2);
退货清单;
});
merged.subscribe(System.out::println);

首先,为什么要这样做?第二,
reduce
需要有限的序列来生成最终结果,但受试者永远无法完成。
mergeWith
行为主体
完美配合,问题可能在于
reduce
。首先,为什么要这样做?其次,
reduce
需要有限的序列来生成最终结果,但受试者永远无法完成。
mergeWith
行为主体
完美配合,问题可能在于
reduce
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);