代码之家  ›  专栏  ›  技术社区  ›  Alex Kokorin

如何从GroupedObservable获取价值?

  •  2
  • Alex Kokorin  · 技术社区  · 8 年前

    我使用了groupBy迭代器,得到了GroupedObservable对象。现在我想把这个组简化为一个T对象。如何从GroupedObservable获取V?我只能看到getKey()操作符,而autocomplete对我没有帮助。

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

    谢谢

    2 回复  |  直到 8 年前
        1
  •  2
  •   akarnokd    8 年前

    A. GroupedObservable 是一个 Observable 所以你有通常的 map , filter , flatMap , collect 等。操作员可用。

    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);
    
        2
  •  0
  •   djm.im Fan Cheung    6 年前
    getObservable()
        .flatMap(Observable::from)
        .groupBy(player-> player.getName())
        .flatMap(player-> player.count()
        .map(player -> player)
        .subscribe(//** your logic for subscription **//); 
    

    使用GroupedObservable的一个简单示例。