02_RxJava转换操作符代码示例

来源:互联网 发布:知错改错不认错的人 编辑:程序博客网 时间:2024/05/18 00:42
package com.gdc.rxjava;import java.util.List;import rx.Observable;import rx.Observer;import rx.Subscriber;import rx.functions.Func1;import rx.functions.Func2;import rx.observables.GroupedObservable;public class TransformingDemo {public static void main(String[] args) {// testMap();// testFlatMap();// testGroupBy();// testBuffer();testScan();}private static void testMap() {// 将整型数据转换成String类型输出Observable.just(1, 2, 3).map(new Func1<Integer, String>() {@Overridepublic String call(Integer arg0) {return arg0 + "";}}).subscribe(new Subscriber<String>() {@Overridepublic void onCompleted() {System.out.println("onCompleted()");}@Overridepublic void onError(Throwable arg0) {System.out.println("onError():" + arg0);}@Overridepublic void onNext(String arg0) {System.out.println("onNext():" + arg0);}});}private static void testFlatMap() {Observable.just(1, 2, 3, 4, 5).flatMap(new Func1<Integer, Observable<? extends String>>() {@Overridepublic Observable<? extends String> call(Integer arg0) {return Observable.just(arg0 + "");}}).subscribe(new Subscriber<String>() {@Overridepublic void onCompleted() {System.out.println("onCompleted()");}@Overridepublic void onError(Throwable arg0) {System.out.println("onError():" + arg0);}@Overridepublic void onNext(String arg0) {System.out.println("onNext():" + arg0);}});}private static void testGroupBy() {Observable.just(1, 2, 3, 4, 5).groupBy(new Func1<Integer, Integer>() {@Overridepublic Integer call(Integer arg0) {// 分组规则return arg0 % 2;}}).subscribe(new Observer<GroupedObservable<Integer, Integer>>() {@Overridepublic void onCompleted() {System.out.println("onCompleted()");}@Overridepublic void onError(Throwable arg0) {System.out.println("onError():" + arg0);}@Overridepublic void onNext(GroupedObservable<Integer, Integer> arg0) {arg0.subscribe(new Subscriber<Integer>() {@Overridepublic void onCompleted() {}@Overridepublic void onError(Throwable arg0) {}@Overridepublic void onNext(Integer data) {System.out.println("group:" + arg0.getKey() + " data:" + data);}});}});}private static void testBuffer() {// 随机生成5个数字,一次性订阅两次,然后打印出来,通过运行得知,只需要3次即可以把数据全部打印出来Observable.range(1, 5).buffer(2).subscribe(new Subscriber<List<Integer>>() {@Overridepublic void onCompleted() {System.out.println("onCompleted()");}@Overridepublic void onError(Throwable arg0) {System.out.println("onError():" + arg0);}@Overridepublic void onNext(List<Integer> arg0) {System.out.println("onNext():" + arg0);}});}private static void testScan() {// 1到5的和Observable.range(1, 5).scan(new Func2<Integer, Integer, Integer>() {@Overridepublic Integer call(Integer sum, Integer arg1) {// sum:当前数据的和,arg1:每一次需要累加的数据return sum + arg1;}}).subscribe(new Subscriber<Integer>() {@Overridepublic void onCompleted() {System.out.println("onCompleted()");}@Overridepublic void onError(Throwable arg0) {System.out.println("onError():" + arg0);}@Overridepublic void onNext(Integer arg0) {System.out.println("onNext():" + arg0);}});}}

原创粉丝点击