您的位置:首页 > 移动开发 > Android开发

[Android开发] RxJava2之路十 - 布尔操作符例子Demo

2017-03-03 10:56 477 查看

一、布尔操作符列表

对原始数据发射源进行布尔操作,经过布尔操作之后,接收者就是观察者接收到的数据是布尔值。

名称解析
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);

}
});

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息