1.前言
条件型操作符,判断类型,向下游发送布尔类型的数据
- all
- any
- contains
- isEmpty
2.条件型操作符
2.1 all
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sqwCIQ3m-1571797880276)(8.png)]
说明
all条件操作符,类似于And(与)条件,上游发射的所有数据都会经过判断, 一个条件为false 最后结果就是false 全部为true,最后结果才会为true
使用Rxjava的做法例子
User user1 = new User("111", 1);
User user2 = new User("333", 3);
User user3 = new User("999", 9);
User user4 = new User("222", 2);
User user5 = new User("888", 8);
User user6 = new User("777", 7);
List<User> users = new ArrayList<>();
users.add(user1);
users.add(user2);
users.add(user3);
users.add(user4);
users.add(user5);
users.add(user6);
Observable.fromIterable(users)
.all(new Predicate<User>() {
@Override
public boolean test(User user) throws Exception {
return "000".equals(user.name);
}
}).subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) throws Exception {
System.out.println("aBoolean = [" + aBoolean + "]");
}
});
输出结果:
I/System.out: aBoolean = [false]
2.1 any
说明
any操作符和all恰好相反,类似Or(或)条件 一个条件为true,结果为true,所有条件为false,结果为false
2.3 contains
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lNABvZAU-1571797880277)(7.png)]
说明:
contains 验证要发射的数据里面是否有包含 contains 里面的值,如果有则返回true
例子(判断列表中是否包含某一元素)
User user1 = new User("111", 1);
User user2 = new User("333", 3);
User user3 = new User("999", 9);
User user4 = new User("222", 2);
User user5 = new User("888", 8);
User user6 = new User("777", 7);
User user7 = new User("000", 7);
List<User> users = new ArrayList<>();
users.add(user1);
users.add(user2);
users.add(user3);
users.add(user4);
users.add(user5);
users.add(user6);
users.add(user7);
Observable.fromIterable(users)
.contains(user5).subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) throws Exception {
Log.i(TAG, "accept: "+aBoolean);
}
});
输出结果
I/MainActivity: accept: true
2.3 isEmpty (较少使用)
说明
如果发送的是一个empty,则下游接收的时候是ture,否则为false
例子
Observable.empty()
.isEmpty().subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) throws Exception {
Log.i(TAG, "accept: "+aBoolean);
}
});
输出结果
I/MainActivity: accept: true