Как получить разницу между двумя наблюдаемыми?
У меня есть obs1 = Observable.range(1, 10)
а потом obs2 = Observable.range(5, 10)
(как правило, последовательность не будет в порядке возрастания).
Я хочу получить разницу между obs2 и obs1, чтобы получить значения (наблюдаемые из них) от obs2, которых нет в obs1.
1 ответ
Решение
Вы можете собирать предметы из obs1
в HashSet
а затем фильтр obs2
с помощью set::contains
:
obs1.collect(HashSet::new, (a, b) -> a.add(b))
.flatMapObservable(set ->
obs2.filter(set::contains)
)
.subscribe(System.out::println);