一、布爾操作符列表
對原始數據發射源進行布爾操作,經過布爾操作之後,接收者就是觀察者接收到的數據是布爾值。
名稱 | 解析 |
---|---|
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);
}
});
}