Как получить разницу между двумя наблюдаемыми?

У меня есть 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);
Другие вопросы по тегам