Map: 可以将一种数据类型,转换成另一种数据类型。
int a = 123; Observable.just(a).map(new Func1() { @Override public String call(Integer integer) { return String.valueOf(integer); } }).subscribe(new Subscriber() {
@Override
public void onCompleted() {
System.out.println("onCompleted");
}
@Override
public void onError(Throwable arg0) {
System.out.println("onError");
}
@Override
public void onNext(String arg0) {
System.out.println("onNext-> " + arg0);
}
});
运行结果:
onNext-> 123 onCompleted
FlatMap:FlatMap将一个发射数据的Observable变换为多个Observables,然后将它们发射的数据合并后放进一个单独的Observable
Observable.just(1,2,3,4,5).flatMap(new Func1>() {@Overridepublic Observable? extends Stringcall(Integer arg0) {return Observable.just(arg0+"");}}).subscribe(new Subscriber() {
@Override
public void onCompleted() {
System.out.println("onCompleted");
}
@Override
public void onError(Throwable arg0) {
System.out.println("onError");
}
@Override
public void onNext(String arg0) {
System.out.println("onNext-> " + arg0);
}
});
运行结果:
onNext-> 1
onNext-> 2
onNext-> 3
onNext-> 4
onNext-> 5
onCompleted
GroupBy:GroupBy操作符将原始Observable分拆为一些Observables集合,它们中的每一个发射原始Observable数据序列的一个子序列。哪个数据项由哪一个Observable发射是由一个函数判定的,这个函数给每一项指定一个Key,Key相同的数据会被同一个Observable发射。
Observable.just(1,2,3,4,5).groupBy(new Func1() {@Overridepublic Integer call(Integer arg0) {return arg0%2;}}).subscribe(new Observer>() {@Overridepublic void onCompleted() {}@Overridepublic void onError(Throwable arg0) {}@Overridepublic void onNext(GroupedObservablearg0) {arg0.subscribe(new Subscriber() {
@Override
public void onCompleted() {
System.out.println("onCompleted->");
}
@Override
public void onError(Throwable arg0) {
}
@Override
public void onNext(Integer data) {
System.out.println("onNext->"+ arg0.getKey() + "data:"+data);
}
});
}
});
运行结果:
onNext->1data:1
onNext->0data:2
onNext->1data:3
onNext->0data:4
onNext->1data:5
onCompleted->
onCompleted->
网友评论