RxJava-在groupBy

时间:2018-07-16 14:46:07

标签: java functional-programming rx-java reactive-programming rx-java2

假设我有一个可观察的发射整数。我想对所有奇数加1,对所有偶数减去1。

用RxJava实现这一目标的干净方法是什么?

我正在努力了解如何使用groupBy来实现这一目标,因为在odd之后我还没有一种清晰的方法来获得evengroupBy的可观察性,然后将不同的函数映射到每个函数(并可能在之后合并它们)。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

简单地有条件地映射它们如何?

Observable.range(1, 10)
    .map(v -> {
       if (v % 2 == 0) {
           return v - 1;
       }
       return v + 1;
    })
    .subscribe(System.out::println)

更多地使用groupBy

Observable.range(1, 10)
    .groupBy(v -> v % 2 == 0)
    .flatMap(group -> {
        if (group.getKey()) {
           return group.map(v -> v + 1);
        }
        return group.map(v -> v - 1);
    })
    .subscribe(System.out::println);