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

简介:

前言:

之前的 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 事件。

相关文章
|
Java 关系型数据库 MySQL
基于springboot的数码论坛系统设计与实现
基于springboot的数码论坛系统设计与实现
|
11月前
|
存储 Java
Java中ArrayList 元素的排序
本文提供了Java中根据`ArrayList`元素的某个属性进行排序的示例代码,包括实现`Comparable`接口和重载`compareTo`方法,然后使用`Collections.sort`方法进行排序。
|
Java 数据安全/隐私保护 容器
Java详解:GUI容器组件 | 功能组件
Java详解:GUI容器组件 | 功能组件
163 0
|
监控 安全 Linux
Linux系统入侵排查(三)
本文介绍了Linux系统入侵排查的相关知识。首先解释了进行系统入侵排查的原因,即当企业遭受黑客攻击、系统崩溃或其他安全事件时,需要迅速恢复系统并找出入侵来源。接着,重点讲述了日志入侵排查的重要性,因为日志文件记录了系统的重要活动,可以提供入侵行为的线索。
|
JavaScript
vue实现几秒后跳转新页面demo示例(整理)
vue实现几秒后跳转新页面demo示例(整理)
|
缓存 JavaScript 前端开发
前端工程化:优化JS加载速度
在现代Web应用中,JavaScript已成为必不可少的一部分,但是随着业务复杂度的增加,JS文件的体积也越来越大,导致网页加载速度变慢,影响用户体验。本文将介绍前端工程化的优化策略,以提高JS文件的加载速度。
122 2
ssm(Spring+Spring mvc+mybatis)实体类——Dept
ssm(Spring+Spring mvc+mybatis)实体类——Dept
leetcode-6132:使数组中所有元素都等于零
leetcode-6132:使数组中所有元素都等于零
65 0
|
JSON Java 应用服务中间件
GIS开发:nginx发布常用数据
GIS开发:nginx发布常用数据
499 0
|
JavaScript 前端开发 图形学
程序人生 | 与足球共舞的火柴人(致敬格拉利什,赋予足球更深的意义)
程序人生 | 与足球共舞的火柴人(致敬格拉利什,赋予足球更深的意义)
196 0