Reputation: 469
I used groupBy iterator and got GroupedObservable object. Now I want to reduce that group to one T object. How can I get V from GroupedObservable? I can only see getKey() operator and autocomplete doesn't help me.
o.groupBy(player.getName())
.flatMap(namePlayers -> {
// How can I extract Observable<Player> from namePlayers
// I want to write sth like this:
.collect(Result::new, (result, player) -> result.mergeInfoFrom(player))
.flatMapCompletable(result -> writeResultSomeWhere())
}
Thanks.
Upvotes: 2
Views: 3508
Reputation: 3723
getObservable()
.flatMap(Observable::from)
.groupBy(player-> player.getName())
.flatMap(player-> player.count()
.map(player -> player)
.subscribe(//** your logic for subscription **//);
A simple example of using GroupedObservable.
Upvotes: 0
Reputation: 70017
A GroupedObservable
is an Observable
so you have the usual map
, filter
, flatMap
, collect
, etc. operators available.
Observable.range(1, 20)
.groupBy(v -> v % 2 == 0)
.flatMapMaybe(group -> {
return group.reduce((a, b) -> a + b)
.map(v -> "Group " + group.getKey() + " sum is " + v);
})
.subscribe(System.out::println);
Upvotes: 2