初识RxJava(六)判断类 操作符

本文详细介绍了RxJava中的判断类操作符,包括all、takeWhile、skipWhile、takeUntil、skipUntil、SequenceEqual、contains、isEmpty和amb等,通过实例代码展示了每个操作符的功能和使用场景。

前言:

之前的 5 篇笔记已经将 RxJava 的操作符写的差不多了,今天周五,虽然明天休息了,但是,生命不息学习不止,今天笔者来记录一下 RxJava 的判断类 操作符 。

正文:

1、all 操作符

1)、作用

判断 被观察者 发射的数据是否满足规定条件,满足的话,观察者接收为 true、反之为 false;

2)、代码
   /**
     * all  操作符
     */
    @SuppressLint("CheckResult")
    private void allMethod() {
        Observable.just(1, 2, 3, 4, 5, 6).all(new Predicate<Integer>() {
            @Override
            public boolean test(Integer integer) throws Exception {
                //判断所有对象 是否都 小于 5
                return integer < 5;
            }
        }).subscribe(new Consumer<Boolean>() {
            @Override
            public void accept(Boolean aBoolean) throws Exception {

                logDUtils("accept:" + aBoolean);
            }
        });
    }
3)、效果

效果

2、takeWhile 操作符

1)、作用

判断发送的每项数据是否满足 设置的条件,满足则发送,不满足的不发送

2)、代码
 /**
     * takeWhile
     */
    @SuppressLint("CheckResult")
    private void takeWhileMethod() {
        Observable.just(1, 2, 3, 4, 5, 6).takeWhile(new Predicate<Integer>() {
            @Override
            public boolean test(Integer integer) throws Exception {
                return integer < 4;
            }
        }).subscribe(new Consumer<Integer>() {
            @Override
            public void accept(Integer integer) throws Exception {
                logDUtils("accept:" + integer);
            }
        });
    }
3)、效果

效果

3、skipWhile 操作符

1)、作用

判断发送的数据 是否满足指定条件,输出不符合条件的事件

2)、代码
 /***
     * skipWhile 操作符
     */
    @SuppressLint("CheckResult")
    private void skipWhileMethod() {

        Observable.just(1, 2, 3, 4, 5, 6, 7).skipWhile(new Predicate<Integer>() {
            @Override
            public boolean test(Integer integer) throws Exception {
                return integer<5;
            }
        }).subscribe(new Consumer<Integer>() {
            @Override
            public void accept(Integer integer) throws Exception {
                logDUtils("accept:" + integer);
            }
        });
    }
3)、效果

效果

4、takeUntil 操作符

1)、作用

当 被观察者 发送的事件满足 指定条件时,停止发送事件

2)、代码
  /**
     * takeUntil 操作符
     */
    @SuppressLint("CheckResult")
    private void takeUntilMethod() {
        Observable.just(1, 2, 3, 4, 5, 6, 7).takeUntil(new Predicate<Integer>() {
            @Override
            public boolean test(Integer integer) throws Exception {
                return integer == 5;
            }
        }).subscribe(new Consumer<Integer>() {
            @Override
            public void accept(Integer integer) throws Exception {
                logDUtils("accept:" + integer);
            }
        });
    }
3)、效果

效果

5、skipUntil 操作符

1)、作用

当满足某条件时 才是发送数据

2)、代码
  /**
     * skipUntil 操作符
     */
    @SuppressLint("CheckResult")
    private void skipUntilMethod() {
        Observable.interval(10, TimeUnit.MILLISECONDS)
                .skipUntil(Observable.timer(80, TimeUnit.MILLISECONDS))
                .subscribe(new Consumer<Long>() {
                    @Override
                    public void accept(Long aLong) throws Exception {
                        logDUtils("accept:" + aLong);
                    }
                });
    }
3)、效果

效果

有没有发现延迟了 7 才开始出现数据

6、SequenceEqual 操作符

1)、作用

判断 两个 被观察者 发送的数据是否相同

2)、代码
 /**
     * sequenceEqual 操作符
     */
    @SuppressLint("CheckResult")
    private void sequenceEqualMethod() {
        Observable.sequenceEqual(Observable.just(1, 2, 3), Observable.just(1, 2, 3))
                .subscribe(new Consumer<Boolean>() {
                    @Override
                    public void accept(Boolean aBoolean) throws Exception {
                        logDUtils("accept:" + aBoolean);
                    }
                });
    }
3)、效果

效果

7、contains 操作符

1)、作用

判断被观察者发送的数据 是否包含指定数据

2)、代码
   /**
     * contains  操作符
     */
    @SuppressLint("CheckResult")
    private void containsMethod() {

        Observable.just(1, 2, 3, 4, "a", 4, 5, "b").contains("a").subscribe(new Consumer<Boolean>() {
            @Override
            public void accept(Boolean aBoolean) throws Exception {
                logDUtils("accept:" + aBoolean);
            }
        });
    }
3)、效果

效果

表示发射的事件 内 包含 “a”.

8、isEmpty 操作符

作用

判断 被观察者发射的数据 是否为空;

9、amb 操作符

作用

当有多个 被观察者 发送数据的时候, 只发送先发出数据的观察者的全部数据。

10、defaultIfEmpty 操作符

作用

不发送 任何的 onNext 事件 只发送 一个 默认值 ,然后就发送 onComplete 事件。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值