RxJava 转换操作符groupBy
来源:互联网 发布:淘宝v达人 编辑:程序博客网 时间:2024/05/22 01:27
groupBy操作符顾名思义就是分组的意思:
第一步:构造分组 call的返回值决定了组名
Observable.range(0, 10).groupBy(new Func1<Integer, Integer>() { @Override public Integer call(Integer integer) { return integer % 3;////分成0,1,2 三个小组 } })
第二部:订阅分组详情:
.subscribe(new Observer<GroupedObservable<Integer, Integer>>() { @Override public void onCompleted() { LogUtils.d("------>onCompleted()"); } @Override public void onError(Throwable e) { LogUtils.d("------>onError()" + e); } @Override public void onNext(final GroupedObservable<Integer, Integer> integerIntegerGroupedObservable) { integerIntegerGroupedObservable.subscribe(new Observer<Integer>() { @Override public void onCompleted() { LogUtils.d("------>inner onCompleted()"); } @Override public void onError(Throwable e) { LogUtils.d("------>inner onError()" + e); } @Override public void onNext(Integer integer) { LogUtils.d("------>group:" + integerIntegerGroupedObservable.getKey() + " value:" + integer); } }); } });
全部代码:
Observable.range(0, 10).groupBy(new Func1<Integer, Integer>() { @Override public Integer call(Integer integer) { return integer % 3;////分成0,1,2 三个小组 } }).subscribe(new Observer<GroupedObservable<Integer, Integer>>() { @Override public void onCompleted() { LogUtils.d("------>onCompleted()"); } @Override public void onError(Throwable e) { LogUtils.d("------>onError()" + e); } @Override public void onNext(final GroupedObservable<Integer, Integer> integerIntegerGroupedObservable) { integerIntegerGroupedObservable.subscribe(new Observer<Integer>() { @Override public void onCompleted() { LogUtils.d("------>inner onCompleted()"); } @Override public void onError(Throwable e) { LogUtils.d("------>inner onError()" + e); } @Override public void onNext(Integer integer) { LogUtils.d("------>group:" + integerIntegerGroupedObservable.getKey() + " value:" + integer); } }); } });
结果为:
02-26 18:01:36.218 9796-9796/com.rxandroid.test1 D/----->: ------>group:0 value:0
02-26 18:01:36.218 9796-9796/com.rxandroid.test1 D/----->: ------>group:1 value:1
02-26 18:01:36.218 9796-9796/com.rxandroid.test1 D/----->: ------>group:2 value:2
02-26 18:01:36.218 9796-9796/com.rxandroid.test1 D/----->: ------>group:0 value:3
02-26 18:01:36.218 9796-9796/com.rxandroid.test1 D/----->: ------>group:1 value:4
02-26 18:01:36.218 9796-9796/com.rxandroid.test1 D/----->: ------>group:2 value:5
02-26 18:01:36.218 9796-9796/com.rxandroid.test1 D/----->: ------>group:0 value:6
02-26 18:01:36.218 9796-9796/com.rxandroid.test1 D/----->: ------>group:1 value:7
02-26 18:01:36.218 9796-9796/com.rxandroid.test1 D/----->: ------>group:2 value:8
02-26 18:01:36.218 9796-9796/com.rxandroid.test1 D/----->: ------>group:0 value:9
02-26 18:01:36.218 9796-9796/com.rxandroid.test1 D/----->: ------>inner onCompleted()
02-26 18:01:36.218 9796-9796/com.rxandroid.test1 D/----->: ------>inner onCompleted()
02-26 18:01:36.218 9796-9796/com.rxandroid.test1 D/----->: ------>inner onCompleted()
02-26 18:01:36.218 9796-9796/com.rxandroid.test1 D/----->: ------>onCompleted()
call的返回值并不是组的个数:
如:
Observable.range(0, 10).groupBy(new Func1<Integer, Integer>() { @Override public Integer call(Integer integer) { // return integer % 3;////分成0,1,2 三个小组 return 2; } }).subscribe(new Observer<GroupedObservable<Integer, Integer>>() { @Override public void onCompleted() { LogUtils.d("------>onCompleted()"); } @Override public void onError(Throwable e) { LogUtils.d("------>onError()" + e); } @Override public void onNext(final GroupedObservable<Integer, Integer> integerIntegerGroupedObservable) { integerIntegerGroupedObservable.subscribe(new Observer<Integer>() { @Override public void onCompleted() { LogUtils.d("------>inner onCompleted()"); } @Override public void onError(Throwable e) { LogUtils.d("------>inner onError()" + e); } @Override public void onNext(Integer integer) { LogUtils.d("------>group:" + integerIntegerGroupedObservable.getKey() + " value:" + integer); } }); } });结果只有一个组,这个组的组名叫2:
02-26 18:14:19.228 21365-21365/com.rxandroid.test1 D/----->: ------>group:2 value:0
02-26 18:14:19.228 21365-21365/com.rxandroid.test1 D/----->: ------>group:2 value:1
02-26 18:14:19.238 21365-21365/com.rxandroid.test1 D/----->: ------>group:2 value:2
02-26 18:14:19.238 21365-21365/com.rxandroid.test1 D/----->: ------>group:2 value:3
02-26 18:14:19.238 21365-21365/com.rxandroid.test1 D/----->: ------>group:2 value:4
02-26 18:14:19.238 21365-21365/com.rxandroid.test1 D/----->: ------>group:2 value:5
02-26 18:14:19.238 21365-21365/com.rxandroid.test1 D/----->: ------>group:2 value:6
02-26 18:14:19.238 21365-21365/com.rxandroid.test1 D/----->: ------>group:2 value:7
02-26 18:14:19.238 21365-21365/com.rxandroid.test1 D/----->: ------>group:2 value:8
02-26 18:14:19.238 21365-21365/com.rxandroid.test1 D/----->: ------>group:2 value:9
02-26 18:14:19.238 21365-21365/com.rxandroid.test1 D/----->: ------>inner onCompleted()
02-26 18:14:19.238 21365-21365/com.rxandroid.test1 D/----->: ------>onCompleted()
- RxJava 转换操作符groupBy
- RxJava转换操作符
- Rxjava 转换操作符
- RxJava 转换操作符 buffer
- RxJava 转换操作符 flatMap
- RxJava转换操作符 conactMap
- RxJava 转换操作符 switchMap
- RxJava 转换操作符scan
- RxJava转换操作符cast
- RxJava转换操作符window
- RxJava之转换操作符
- RxJava转换类型操作符
- RxJava—转换操作符
- RxJava----操作符:转换操作符
- RxJava系列3(转换操作符)
- RxJava系列3(转换操作符)
- RxJava使用详解--转换操作符
- RxJava学习之转换型操作符
- Android平台类加载流程源码分析
- 腾讯后台开发面试题及答案
- 作业day08
- libsqlite3.dylib找不到
- redis内部数据结构--简单动态字符串sds
- RxJava 转换操作符groupBy
- 推荐提升 Android 性能的建议
- IOS学习 NSNavigationController 多个子页面间相互跳转
- iOS清除缓存
- oracle 跟踪事件 set event
- GridView使用的技巧
- lua获取当时时间
- VS2010下设置GDI+
- 64位CentOs6.5系统阿里云服务器源码安装MySql5