Es gab einen Fall, in dem ich die von RxJava als Eingabe genommenen Daten nach einer bestimmten Regel gruppieren und empfangen wollte.
Ich möchte keine nicht zusammenhängenden Werte zusammenstellen, also toMultiMap ()
und [groupBy ()
](http://reactivex.io/ RxJava / javadoc / rx / Observable.html # groupBy) kann nicht verwendet werden.
Es sieht aus wie das. Bitte verpassen Sie nicht die Verwendung von "wahr" und "falsch" im Gegensatz zum Titel.
Die Beurteilung des gleichen Wertes sollte mit .distinctUntilChanged ()
möglich sein.
import rx.Observable;
public class RxJavaPlayground {
public static void main(String[] args) {
Observable.just(false, false, true, true, false, true, true)
.publish(p -> {
return p.buffer(() -> p.distinctUntilChanged());
})
.filter(x -> x.size() > 0)
.subscribe((x) -> System.out.println(x));
/*
* =>
* [false, false]
* [true, true]
* [false]
* [true, true]
*/
}
}
Zu dem Zeitpunkt, an dem neue Daten herauskommen (Gruppierung endet) mit .distinctUntilChanged ()
Die bis zu diesem Punkt gesammelten Daten werden ausgegeben (die Funktion von .buffer ()
).
Da "Observable" sowohl von ".buffer ()" als auch von ".distinctUntilChanged ()" gelesen wird, wird es mit ".publish ()" auf "Hot" gesetzt.
http://stackoverflow.com/questions/31314345/rxjava-buffer-wind
Recommended Posts