Alex Kokorin
Alex Kokorin

Reputation: 469

How can I get value from GroupedObservable?

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

Answers (2)

Ankit Kumar
Ankit Kumar

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

akarnokd
akarnokd

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

Related Questions