RxJava 转换操作符groupBy
2016-02-25 18:13
561 查看
groupBy操作符顾名思义就是分组的意思:
第一步:构造分组 call的返回值决定了组名
第二部:订阅分组详情:
全部代码:
结果为:
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的返回值并不是组的个数:
如:
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()
第一步:构造分组 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>() {结果只有一个组,这个组的组名叫2:
@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); } }); } });
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()
相关文章推荐
- Java 逻辑运算符
- JAVA_抽象类演示_AbstractDeamo.java____抽象类(abstract class)
- JAVA_抽象类演示_AbstractDeamo.java____抽象类(abstract class)
- [JAVA · 初级]:1.环境变量的配置
- Retrotranslator 转换1.5的class到1.4的class
- Struts2 数据封装机制
- 高效Java编程工具集锦(转自极客头条)
- eclipse 和 android studio 快捷键对比
- spring的线程流程
- java中把List转成json数组格式的字符串
- Java五种单例模式与线程安全
- java设计模式:状态模式 State
- Struts2学习笔记(三):result配置的各项视图转发类型
- spring+mybaties 配置多数据源
- 【Stackoverflow好问题】Java += 操作符实质
- 设计模式:装饰器模式(为对象动态的添加功能)
- java 实体类转成json字符串
- Java垃圾回收工作原理
- 【JavaWeb Structs2学习】OGNL表达式
- eclipse断点调试