Rx java - 困难的情况 [英] Rx java - difficult case

查看:54
本文介绍了Rx java - 困难的情况的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设

Observableobs = Observable.just(1, 2, 3, 4, 5);

我需要一个序列,其中每个 偶数 obs 乘以 obs 中偶数的数量,以及 obs 中的每个 奇数 obs 乘以奇数 个数.

I need a sequence, where each even number of obs multiplied by count of even numbers in obs, and each odd number of obs multiplied by count of odd numbers in obs.

即在给定的情况下,有 2 个偶数和 3 个奇数,所以结果序列必须是

I.e. in given case there are 2 evens and 3 odds, so result sequence must be

3  (1 * 3)
4  (2 * 2)
9  (3 * 3)
8  (4 * 2)
15 (5 * 3)

我该怎么做?

推荐答案

这对我有用.

    Observable<Integer> obs = Observable.just(1, 2, 3, 4, 5);

    Observable<Integer> evenCount = obs.filter(integer -> integer % 2 == 0);
    Observable<Integer> oddCount = obs.filter(integer -> integer % 2 != 0);


    obs.flatMap(
            integer -> {
                if (integer % 2 == 0) {
                    return evenCount.count().map(count -> count * integer).toObservable();
                } else {
                    return oddCount.count().map(count -> count * integer).toObservable();
                }
            }
    ).subscribe(
            s -> Log.v("", "answer -> " + s),
            error -> error.printStackTrace()
    );

这篇关于Rx java - 困难的情况的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆