이것은 rxjava에서 두 관측 값의 길이가 같음을 의미합니다.
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);
편집
또 다른 방법은 모음 내가 그 "실시간"대칭 차이 할 RxJava에서 많이 없다고 생각
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);
소스의 값이 방출 될 때와 그 결과로 관찰 가능하게되는 결과를 표시하는 대리석 다이어그램을 제공 할 수 있습니까? – Enigmativity
@Enigmativity 대리석 다이어그램을 추가했습니다. HTH –
그것은 멋진 대리석 다이어그램입니다. 어떻게 그걸 만들었 니? 나는 아직도 규칙을 이해할 수 없다. 설명해 주시겠습니까? – Enigmativity