[Android开发] RxJava2之路十

来源:互联网 发布:尤里的复仇网络进不去 编辑:程序博客网 时间:2024/05/17 17:58

一、布尔操作符列表

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

名称 解析 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: 103-02 18:31:06.762 23478-23478/cn.com.minstone.rxjavalearn E/BooleanActivity@@: all: 203-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: 103-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
原创粉丝点击