rxjava 1.2.2を使用しています。rxjavaバッファから最大値を取得する
私のリストから始めると、バッファをいっぱいにして、たとえばMax Itemsフィルタだけを放出する必要があるように、例えば5秒ごとにバッファのMax項目をフィルタしたいと思います。
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()));
もちろん、上記のスニペットコードは動作しません。 2リストo1とo2を比較したくありませんが、同じリストのアイテムを比較したいだけです。
max演算子は正しい選択ですか?整数を比較するのではなく、項目を比較することに注意してください。各項目は、固定フィールドを持つビーズです。このフィールドの最大値を持つものが欲しい。
バッファからmaxを選択するにはどうすればよいですか? ありがとう
あなたをしましたMathObservableがRxJavaパッケージに含まれていないため、libary RxJavaMathもインポートしてください。 –
はい、もちろんですが、私は演算子の正しい連結について疑問に思っています。 – Alex
質問を編集しました。もう一度読むことができますか? – Alex