I m using rxjava 1.2.2.rxjava получение максимального значения из буфера
Начиная с моего списка, я хочу заполнить буфер, а затем отфильтровать элемент Max в буфере так, чтобы, например, каждые 5 секунд, нужно было испускать фильтр Max Item.
Observable<Item> EventEmitter = Observable.from(itemsList);
Observable<List<Item>> tapBufferEmitter = tapEventEmitter.buffer(5, TimeUnit.SECONDS);
MathObservable.from(tapBufferEmitter).max(new Comparator<List<Item>>() {
@Override
public int compare(List<Item> o1, List<Item> o2) {
int m1 =o1.getVal();
int m2 = o1.getVal();
if (m1 == m2){
return 0;
} else if (m1 > m2){
return 1;
} else {
return -1;
}
}
}).subscribeOn(Schedulers.from(executor1))
.subscribe(s -> {
System.out.println("Called thread: " + Thread.currentThread().getId());
syso.("Max Item is:" + s.getId());
}, e -> System.out.println(e.getMessage()));
Но, конечно, код фрагмента выше doen t work. Я не хочу сравнивать 2 списка o1 и o2, но хочу просто сравнить элемент того же списка.
Является ли оператор max правильным выбором? Имейте в виду, что я не сравниваю целые числа, кроме элементов. Каждый элемент представляет собой шарик с фиксированным полем. Я хочу тот, у которого максимальное значение этого поля.
Как выбрать максимум из буфера? Спасибо
ли вам импортируйте libary RxJavaMath, потому что MathObservable не находится в пакете RxJava. –
да, конечно ... но я задаюсь вопросом о правильной конкатенации операторов. – Alex
Я отредактировал вопрос ... вы можете прочитать его снова? – Alex