[Android开发] RxJava2之路十 - 布尔操作符例子Demo

一、布尔操作符列表

对原始数据发射源进行布尔操作,经过布尔操作之后,接收者就是观察者接收到的数据是布尔值。

名称解析
all()判断是否所有的数据项都满足某个条件
contains()判断Observable是否会发射一个指定的值
isEmpty()判断Observable是否发射了一个值
sequenceEqual()判断两个Observables发射的序列是否相等

二、、布尔操作符

2.1 all操作符

在all里面接收发射源的数据,如果返回了假就终止发射,发射假到观察者。返回真就等发射源发射完毕就发射真到观察者。

    /**
     * 判断是否所有的数据项都满足某个条件
     */
    private void testAll() {

        Observable.just("1", "2")
                .all(new Predicate<String>() {
                    @Override
                    public boolean test(@NonNull String s) throws Exception {
                        Log.e(TAG, "all: "+s);

                        //return false;
                        return true;
                    }
                }).subscribe(new Consumer<Boolean>() {
                    @Override
                    public void accept(@NonNull Boolean aBoolean) throws Exception {

                        Log.e(TAG, "accept: "+aBoolean);

                    }
                });

    }

all的返回为真时候的输出

03-02 18:31:06.762 23478-23478/cn.com.minstone.rxjavalearn E/BooleanActivity@@: all: 1
03-02 18:31:06.762 23478-23478/cn.com.minstone.rxjavalearn E/BooleanActivity@@: all: 2
03-02 18:31:06.762 23478-23478/cn.com.minstone.rxjavalearn E/BooleanActivity@@: accept: true

all的返回为假时候的输出:

03-02 18:31:06.762 23478-23478/cn.com.minstone.rxjavalearn E/BooleanActivity@@: all: 1
03-02 18:31:06.762 23478-23478/cn.com.minstone.rxjavalearn E/BooleanActivity@@: accept: false

2.2 contains操作符

判断发射的数据里面有没有指定的数据,有就发射真咯,没就假咯。

    private void testContains() {

        Observable.just("1", "2")
                .contains("2")
                .subscribe(new Consumer<Boolean>() {
                    @Override
                    public void accept(@NonNull Boolean aBoolean) throws Exception {

                        Log.e(TAG, "accept: "+aBoolean);

                    }
        });

    }

输出:

03-02 18:34:30.393 23937-23937/cn.com.minstone.rxjavalearn E/BooleanActivity@@: accept: true

2.3 isEmpty操作符

判断发射的数据是否为空

    private void testIsEmpty() {

        Observable.just("1", "2")
                .isEmpty()
                .subscribe(new Consumer<Boolean>() {
                    @Override
                    public void accept(@NonNull Boolean aBoolean) throws Exception {

                        Log.e(TAG, "accept: "+aBoolean);

                    }
                });

    }

输出:

03-02 18:39:56.288 24787-24787/cn.com.minstone.rxjavalearn E/BooleanActivity@@: accept: false

如果下面这样,输出就是真了:

    private void testIsEmpty() {

        Observable.empty()
                .isEmpty()
                .subscribe(new Consumer<Boolean>() {
                    @Override
                    public void accept(@NonNull Boolean aBoolean) throws Exception {

                        Log.e(TAG, "accept: "+aBoolean);

                    }
                });

    }

2.4 sequenceEqual操作符

判断两个Observables发射的序列是否相等。

    private void testSequenceEqual() {

        Observable.sequenceEqual(Observable.just("1"),Observable.just("1"))
                .subscribe(new Consumer<Boolean>() {
                    @Override
                    public void accept(@NonNull Boolean aBoolean) throws Exception {

                        Log.e(TAG, "accept: "+aBoolean);

                    }
                });

    }

上面的代码输出为真啦:

03-02 18:42:48.074 25535-25535/cn.com.minstone.rxjavalearn E/BooleanActivity@@: accept: true

下面这样子就输出为假:


    private void testSequenceEqual() {

        Observable.sequenceEqual(Observable.just("1"),Observable.just("1","2"))
                .subscribe(new Consumer<Boolean>() {
                    @Override
                    public void accept(@NonNull Boolean aBoolean) throws Exception {

                        Log.e(TAG, "accept: "+aBoolean);

                    }
                });

    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KeepStudya

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值