将平面图与分组的可观察对象一起使用

Use flatmap with grouped observables

我是 RxJava 的新手,正在尝试了解它。我有以下来源:

Observable<Employee> obs = Observable.just(
    new Employee(101, "Jim", 68_000, 4.2),
    new Employee(123, "Bill", 194_000, 6.7));  

obs.groupBy(e -> e.getRating())
                .flatMap(e-> {
                    return Observable.fromIterable(
                        Arrays.asList(e.getKey())
                    );
                })
                .subscribe(System.out::println);
 

这会打印评分键,但我无法打印值。
是否可以使用 flatMap?

groupBy returns 一个 Observable 为每个唯一键发出一个 GroupedObservableGroupedObservable 实际上只是添加了 getKey 方法的 Observable,因此您可以识别 GroupedObservable 与哪个键关联。所以,如果你想发出每个 GroupedObservable 中的每个值,只需将整个事情直接传递给 flatMap 调用:

Observable<Employee> obs = Observable.just(
    new Employee(101, "Jim", 68_000, 4.2),
    new Employee(123, "Bill", 194_000, 6.7));  

obs.groupBy(e -> e.getRating())
    .flatMap(e -> e)
    .subscribe(System.out::println);