前言:
之前的 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 事件。