[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);

                    }
                });

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章