RxJava--操作符学习笔记
2016-08-14 21:34
363 查看
Filter
filter操作符是对源Observable产生的结果按照指定条件进行过滤,只有满足条件的结果才会提交给订阅者。
其流程图如下:
![](https://img-blog.csdn.net/20160814213124656)
代码如下:
输出结果为:
![](https://img-blog.csdn.net/20160814213310610)
Map
map函数只有一个参数,参数一般是Func1,Func1 的
其流程图如下:
![](https://img-blog.csdn.net/20160814222314022)
实效:
![](https://img-blog.csdn.net/20160814222403257)
代码如下:
输出结果:
![](https://img-blog.csdn.net/20160814222545916)
Zip
zip操作符是把两个observable提交的结果,严格按照顺序进行合并
流程图如下:
![](https://img-blog.csdn.net/20160814225342223)
代码如下:
输出结果如下:
![](https://img-blog.csdn.net/20160814225528860)
注意输出结果,只输出了5个结果,但是
Merge
merge操作符是按照两个Observable提交结果的时间顺序,对Observable进行合并
流程图如下:
![](https://img-blog.csdn.net/20160815132356370)
代码如下:
输出结果:
filter操作符是对源Observable产生的结果按照指定条件进行过滤,只有满足条件的结果才会提交给订阅者。
其流程图如下:
代码如下:
@Test public void filterTest() { //输出日志 ShadowLog.stream = System.out; String[] strings = new String[]{ "q", "w", "", "e", "" }; Observable.from(strings) .filter(new Func1<String, Boolean>() { @Override public Boolean call(String s) { return !TextUtils.isEmpty(s); } }) .subscribe(new Action1<String>() { @Override public void call(String s) { Log.d(TAG, "call: " + s); } }); }
输出结果为:
Map
map函数只有一个参数,参数一般是Func1,Func1 的
<I,O>I,O模版分别为输入和输出值的类型,实现Func1的call方法对I类型进行处理后返回O类型数据
其流程图如下:
实效:
代码如下:
@Test public void mapTest() { String[] strings = new String[]{ "0", "1", "", "2", "" }; Observable.from(strings) .filter(new Func1<String, Boolean>() { @Override public Boolean call(String s) { return !TextUtils.isEmpty(s); } }) .map(new Func1<String, Integer>() { @Override public Integer call(String s) { return Integer.parseInt(s); } }) .subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.d(TAG, "call: " + integer); } }); }
输出结果:
Zip
zip操作符是把两个observable提交的结果,严格按照顺序进行合并
流程图如下:
代码如下:
@Test public void zipTest() { String[] strings = new String[]{ "0", "1", "t", "r", "y", "k" }; String[] strings2 = new String[]{ "q", "3", "", "e", "" }; Observable observable1 = Observable.from(strings); Observable observable2 = Observable.from(strings2); Observable.zip(observable1, observable2, new Func2<String, String, String>() { @Override public String call(String o, String o2) { return o + o2; } }) .subscribe(new Action1<String>() { @Override public void call(String s) { Log.d(TAG, "call: " + s); } }); }
输出结果如下:
注意输出结果,只输出了5个结果,但是
strings数组length为6,所以合并结果的length为最小数组的length
Merge
merge操作符是按照两个Observable提交结果的时间顺序,对Observable进行合并
流程图如下:
代码如下:
@Test public void mergeTest() { String[] strings = new String[]{ "0", "1", "", "r", "" }; String[] strings2 = new String[]{ "q", "3", "", "e", "" }; Observable observable1 = Observable.from(strings); Observable observable2 = Observable.from(strings2); Observable.merge(observable1, observable2) .filter(new Func1<String, Boolean>() { @Override public Boolean call(String s) { return !TextUtils.isEmpty(s); } }) .subscribe(new Action1<String>() { @Override public void call(String s) { Log.d(TAG, "call: " + s); } }); }
输出结果:
相关文章推荐
- RxJava 学习笔记(六) --- Transforming 变换操作符
- RxJava学习笔记(二)操作符
- RxJava 学习笔记(五) --- Creating 创建操作符
- RxJava操作符学习笔记
- 2012/1/14 《C++ Primer Plus》第六章:分支语句和逻辑操作符 学习笔记
- 2012/1/14 《C++ Primer Plus》第六章:分支语句和逻辑操作符 学习笔记
- 尽量使用new/delete操作符,而不是malloc/free来分配内存-------Effective C++学习笔记
- PHP学习笔记--PHP操作符
- 我的学习笔记——c++拷贝构造函数,重载赋值操作符
- Java 编程思想(第四版)学习笔记(3)操作符
- Python学习笔记三:逻辑操作符
- Linq学习笔记--延迟操作符(分区操作符)
- Scala学习笔记(六) - 操作符与字面量
- JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
- thinking in java 学习笔记(一)之操作符
- 【Javascript学习笔记】JavaScript中in操作符的学习(附上MDN上IN的翻译说明)
- perl学习笔记三----操作符
- php学习笔记(三)——操作符与控制结构
- JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符