一、布尔操作符列表
对原始数据发射源进行布尔操作,经过布尔操作之后,接收者就是观察者接收到的数据是布尔值。
名称 | 解析 |
---|---|
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);
}
});
}