条件操作符

all

/**
 * 判断发送的每项数据是否都满足条件,满足,返回 true;否则,返回 false
 */
private void all() {
    Observable
            .just(1, 2, 3, 4, 5, 6)
            .all(integer -> integer % 2 == 0)
            .subscribe(aBoolean -> Log.i(TAG, "返回结果: " + aBoolean));
}

takeWhile

/**
 * 判断发送的每项数据是否满足条件,若发送的数据满足该条件,则发送该项数据;否则不发送
 */
private void takeWhile() {
    Observable
            .just(1, 2, 3, 4, 5, 6)
            .takeWhile(integer -> integer % 2 == 0)
            .subscribe(aBoolean -> Log.i(TAG, "返回结果: " + aBoolean));
}

all 与takeWhile区别在于使用all时,观察者接收到的是 发送数据是否满足条件的判断;而takeWhile则返回满足条件的发送数据。

skipWhile

/**
 * 判断发送的每项数据是否满足条件,当不满足条件时(integer>=4)才发送
 */
private void skipWhile() {
    Observable
            .interval(1, TimeUnit.SECONDS)
            .skipWhile(integer ->integer < 4 )
            .subscribe(integer -> Log.i(TAG, "返回结果: " + integer));
}

1、takeWhile 条件为false时才发送;
2、takeUntil 执行到某个条件时,停止发送事件,即(integer>4)时停止发送,Observable也可以作为条件

sequenceEqual

/**
 * 两个Observables需要发送的数据是否相同
 */
private void sequenceEqual() {
    Observable
            .sequenceEqual(
                    Observable.just("a"),
                    Observable.just("1")
            ).subscribe(aBoolean ->  Log.i(TAG, "返回结果: " + aBoolean));
}

contains

/**
 * 判断发送的数据中是否包含指定数据
 */
private void contains() {
    Observable
            .just(1, 2, 3)
            .contains(1)
            .subscribe(integer -> Log.i(TAG, "返回结果: " + integer));
}

isEmpty

/**
 * 判断发送的数据是否为空
 */
private void isEmpty() {
    Observable
            .empty()
            .isEmpty()
            .subscribe(integer -> Log.i(TAG, "返回结果: " + integer));
}

你可能感兴趣的:(条件操作符)