1.简单的转换,通过map转换
比如发送的integer类型,但是接收的是String类型:
Observable observable = Observable.just(1,2,3,4,5).map(new Function<Integer,String>() {
@Override
public String apply(@NonNull Integer o) throws Exception {
return o.toString();//转为String
}
});
2.通过flatMap进行平铺处理。
假如要打印两个数组:
String[] s1 = new String[]{“1”, “2”, “3”};
String[] s2 = new String[]{“4”, “5”, “6”, “7”};
如果使用map的话需要将String[]转为String需要对每个数组进行遍历,如果使用flatMap可以进行平铺,对每个数组进行转换。
String[] s1 = new String[]{"1", "2", "3"};
String[] s2 = new String[]{"4", "5", "6", "7"};
Observable observable = Observable.just(s1, s2).flatMap(new Function<String[], ObservableSource<String>>() {
@Override
public ObservableSource<String> apply(@NonNull String[] strings) throws Exception {
return Observable.fromArray(strings);
}
});
打印结果:
onSubscribe:
onNext:1
onNext:2
onNext:3
onNext:4
onNext:5
onNext:6
onNext:7
onComplete:
出来的顺序可能跟出来的顺序不一样,可以使用concatMap保证顺序。