Я новичок в реактивеХ. Я включил rx-android в свой проект, добавив в файл модуля gradle следующие строки:
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.1.7'
и теперь я пытаюсь начать использовать его. В качестве первой попытки я пытаюсь использовать reactiveX, чтобы проверить, содержат ли два списка хотя бы общий элемент. Я создал наблюдаемое из первого списка, а затем хочу проверить каждый элемент на соответствие списку элементов, содержащихся во втором списке. Я успешно реализовал операцию таким образом
public boolean hasAnyType(TYPE[] types){
Observable<TYPE> o = Observable.fromArray(types);
return !o.filter(type -> hasType(type)).isEmpty().blockingGet();
}
Но, если я правильно понял, оператор filter
проверяет все элементы, сгенерированные наблюдаемым, а я просто хочу знать, найдено ли совпадение. Бесполезно перебирать все элементы, когда найдено совпадение. Я видел оператор first
, который должен делать именно то, что мне нужно.
испускать только первый элемент (или первый элемент, отвечающий какому-либо условию), испускаемый Observable
Пытаюсь использовать его в своем Android-проекте, похоже, что условная версия оператора недоступна в библиотеке. Это правда? есть ли способ получить его в rx-android? Если нет, то какой будет правильный реактивный подход к проблеме?
Большое спасибо