Dato:.Come catena di molteplici metodi di RxJava groupBy() come groupBy() groupBy() ingresso
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Gruppo i numeri di pari o dispari e poi con minore o maggiore di 5.
uscita prevista:
[[1, 3, 5], [2, 4], [6, 8, 10], [7, 9]]
l'ordine di uscita non è limitata.
Ora sto utilizzando il seguente approccio:
Observable.range(1, 10)
.groupBy(n -> n % 2 == 0)
.flatMap((GroupedObservable<Boolean, Integer> g) -> {
return Observable.just(g).flatMap(ObservableUtils.<Boolean, Integer>flatGroup()).groupBy(n -> n > 5);
})
.subscribe((final GroupedObservable<Boolean, Integer> g) -> {
Observable.just(g).flatMap(ObservableUtils.<Boolean, Integer>flatGroup()).forEach(n -> println(g + ": " + n));
});
noti che ObservableUtils è scritto da me per semplificare il codice.
Ma non sono soddisfatto perché non è ancora abbastanza breve da indicare semplicemente l'obiettivo.
Quello che mi aspettavo è come il seguente:
Observable.range(1, 10)
.groupBy(n -> n % 2 == 0)
.groupBy(n -> n > 5)
.subscribe(...);
Per ora posso ridursi solo a:
Observable.range(1, 10)
.lift(new OperatorGroupByGroup(n -> n % 2 == 0))
.lift(new OperatorGroupByGroup(n -> n > 5))
.subscribe(...);
devo ancora scrivere la classe OperatorGroupByGroup che è un po 'complesso. Qualche suggerimento per migliorare?