关于操作符
操作符是为了解决对Observable对象的变换的问题,操作符用于在Observable和最终的Subscriber之间修改Observable发出的事件。
RxJava提供了很多很有用的操作符。
Subscribers更应该做的事情是“响应”,响应Observable发出的事件,而不是去修改,让专业的人去做专业的事。
所以修改就交给操作符吧.
map
对输入做一定处理之后再进行输出
原理
实现
代码
Observable.just(1,2,3).map(v-> 10*v).subscribe(v-> System.out.println(v));
//JRE1.8环境下的写法,不了解的可以去搜索jdk1.8 lambda表达式
输出
10
20
30
from
按顺序输出一个集合序列
原理
代码
List list = Arrays.asList(“a”,”b”,”c”,”d”);
Observable.from(list).subscribe(v-> System.out.println(v));
输出
a
b
c
d
repeat
Repeat操作符可以重复发射一个数据(或者序列),也可以使用repeat(n)来制定发射的次数
原理
代码
Observable.just(“a”,”b”).repeat(2).subscribe(v-> System.out.println(v));
输出
a
b
a
b
groupBy
GroupBy操作符对发射的数据进行分组
原理
代码
Observable.just(1,2,3,4,5,6,7,8,9).groupBy(new Func1<Integer, Integer>() {
@Override
public Integer call(Integer t) {
return t%2;
}
}).subscribe(new Observer<GroupedObservable<Integer, Integer>>(){
@Override
public void onCompleted() {
System.out.println("onCompleted");
}
@Override
public void onError(Throwable e) {
System.out.println("onError");
}
@Override
public void onNext(GroupedObservable<Integer, Integer> t) {
t.subscribe(new Observer<Integer>() {
@Override
public void onCompleted() {
System.out.println("onCompleted");
}
@Override
public void onError(Throwable e) {
System.out.println("onError");
}
@Override
public void onNext(Integer i) {
System.out.println("group" + t.getKey() + ":" + i);
}
});
}
});
输出
group1:1
group0:2
group1:3
group0:4
group1:5
group0:6
group1:7
group0:8
group1:9
onCompleted
onCompleted
onCompleted
这里就列举这么几个操作符了,rxjava里面有很多的操作符值得我们去学习和使用
图解RxJava操作符 RxJava操作符图解