1. 程式人生 > >初識RxJava(六)判斷類 操作符

初識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 事件。