RxJava 过滤器运算符

RxJava filter operator

我是 rxJava 新手。

好吧,我正在测试几个示例以在 rxJava 中集成运算符。 所以,我对此有疑问:

    Observable.just("JUAN", "LUCILA", "ARMANDO").map(new Function<String, Integer>() {
        @Override
        public Integer apply(String s) throws Exception {
            return s.length();
        }
    }).all(new Predicate<Integer>() {
        @Override
        public boolean test(Integer integer) throws Exception {
            return integer > 0;
        }
    }).filter(new Predicate<Boolean>() {
        @Override
        public boolean test(Boolean aBoolean) throws Exception {
            return aBoolean;
        }
    }).subscribe(new Observer<Boolean>() {
        @Override
        public void onSubscribe(Disposable d) {

        }

        @Override
        public void onNext(Boolean value) {
            Log.d("STATUS: ", "OK");
        }

        @Override
        public void onError(Throwable e) {

        }

        @Override
        public void onComplete() {
            Log.d("STATUS: ", "COMPLETE");
        }
    })

因此,AndroidStudio 在订阅(新观察者)时将我标记为错误。 我的 objective 是按长度将名称转换为数字,所以我希望做一个条件,显然它会是真的,晚了,从过滤器中过滤出 TRUE,然后显示一条日志消息说好的!

希望您能帮帮我! 谢谢!

http://reactivex.io/RxJava/2.x/javadoc/

检查 Single

如评论中所说 Observable.all(...) 你输入 Single 然后从 Single.filter(...) 你输入 Maybe.

所以使用你需要toObservable()然后订阅。

@CheckReturnValue
@SchedulerSupport(SchedulerSupport.NONE)
public final Maybe<T> filter(Predicate<? super T> predicate) {
    ObjectHelper.requireNonNull(predicate, "predicate is null");
    return RxJavaPlugins.onAssembly(new MaybeFilterSingle<T>(this, predicate));
}

`

改为

Observable.just("JUAN", "LUCILA", "ARMANDO").map(new Function<String, Integer>() {
            @Override
            public Integer apply(String s) throws Exception {
                return s.length();
            }
        }).all(new Predicate<Integer>() {
            @Override
            public boolean test(Integer integer) throws Exception {
                return integer > 0;
            }
        }).filter(new Predicate<Boolean>() {
            @Override
            public boolean test(Boolean aBoolean) throws Exception {
                return aBoolean;
            }
        }).toObservable().subscribe(new Observer<Boolean>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(Boolean value) {
                Log.d("STATUS: ", "OK");
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {
                Log.d("STATUS: ", "COMPLETE");
            }
        });