我怎样才能从 GroupedObservable 中获取价值?

How can I get value from GroupedObservable?

我使用了 groupBy 迭代器并获得了 GroupedObservable 对象。现在我想将该组缩减为一个 T 对象。如何从 GroupedObservable 获取 V?我只能看到 getKey() 运算符,而自动完成功能对我没有帮助。

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())
}

谢谢。

A GroupedObservable 是一个 Observable,所以你有通常的 mapfilterflatMapcollect 等运算符可用。

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);
getObservable()
    .flatMap(Observable::from)
    .groupBy(player-> player.getName())
    .flatMap(player-> player.count()
    .map(player -> player)
    .subscribe(//** your logic for subscription **//); 

使用 GroupedObservable 的简单示例。