Map: 可以將一種數(shù)據(jù)類型,轉(zhuǎn)換成另一種數(shù)據(jù)類型。
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);
}
});
運行結(jié)果:
onNext-> 123 ? ?onCompleted
FlatMap:FlatMap將一個發(fā)射數(shù)據(jù)的Observable變換為多個Observables,然后將它們發(fā)射的數(shù)據(jù)合并后放進一個單獨的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);
}
});
運行結(jié)果:
onNext-> 1
onNext-> 2
onNext-> 3
onNext-> 4
onNext-> 5
onCompleted
GroupBy:GroupBy操作符將原始Observable分拆為一些Observables集合,它們中的每一個發(fā)射原始Observable數(shù)據(jù)序列的一個子序列。哪個數(shù)據(jù)項由哪一個Observable發(fā)射是由一個函數(shù)判定的,這個函數(shù)給每一項指定一個Key,Key相同的數(shù)據(jù)會被同一個Observable發(fā)射。
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);
}
});
}
});
運行結(jié)果:
onNext->1data:1
onNext->0data:2
onNext->1data:3
onNext->0data:4
onNext->1data:5
onCompleted->
onCompleted->