これは、rxjava で行う方法であり、2 つのオブザーバブルが同じ長さであることを暗示しています。
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);