这就是我在 rxjava 中的做法,这意味着两个 observables 具有相同的长度。
Observable<Integer> obs1 = Observable.just(1, 2, 4, 6);
Observable<Integer> obs2 = Observable.just(1, 3, 4, 5);
obs1.zipWith(obs2, (integer, integer2) -> {
if (!Objects.equals(integer, integer2)) {
return Observable.just(integer).concatWith(Observable.just(integer2));
} else {
return Observable.empty();
}
})
.flatMap(observable -> observable)
.sorted()
.forEach(System.out::println);
编辑
另一种方法是使用集合
Observable<Integer> obs1 = Observable.just(1, 2, 4);
Observable<Integer> obs2 = Observable.just(1, 3, 4, 5);
obs1.mergeWith(obs2)
.sorted()
.reduce(new ArrayList<Integer>(), (integers, integer) -> {
if (integers.contains(integer)) {
integers.remove(integer);
} else {
integers.add(integer);
}
return integers;
})
.flatMapIterable(integers -> integers)
.forEach(System.out::println);