Rxjava的学习之过滤操作符—first
来源:互联网 发布:阿里云havip怎么开通 编辑:程序博客网 时间:2024/06/07 16:39
1. first()
2. first(Func1)
3. firstOrDefault(T)
4. firstOrDefault(T, Func1)
5. takeFirst(Func1)
1.first()
只发射第一个数据,使用没有参数的first操作符。
Integer[] ints={1,2,3,4}; Observable.from(ints) .first() .subscribe(new Subscriber<Integer>() { @Override public void onCompleted() { Log.d("TAG","onCompleted"); } @Override public void onError(Throwable e) { Log.d("TAG","onError"); } @Override public void onNext(Integer integer) { Log.d("TAG",integer+""); } });
运行结果:1onCompleted
2. first(Func1)
发射第一个满足条件的数据。
Observable.from(ints) .first(integer -> integer%2==0) .subscribe(new Subscriber<Integer>() { @Override public void onCompleted() { Log.d("TAG","onCompleted"); } @Override public void onError(Throwable e) { Log.d("TAG","onError"); } @Override public void onNext(Integer integer) { Log.d("TAG",integer+""); } });
运行结果:2onCompleted
如果条件不满足的话会执行onError抛出NoSuchElementException异常。
3. firstOrDefault(T)
firstOrDefault与first类似,如果没有数据发射,则会发射默认数据-1;
Integer[] ints1={}; Observable.from(ints1) .firstOrDefault(-1) .subscribe(new Subscriber<Integer>() { @Override public void onCompleted() { Log.d("TAG","onCompleted"); } @Override public void onError(Throwable e) { Log.d("TAG","onError"); } @Override public void onNext(Integer integer) { Log.d("TAG",integer+""); } });
运行结果:-1onCompleted
4. firstOrDefault(T, Func1)
判定条件是否满足,如果没有满足条件的数据时就发射一个默认值。
Integer[] ints2={1,3,5}; Observable.from(ints2) .firstOrDefault(-1, integer -> integer%2==0) .subscribe(new Subscriber<Integer>() { @Override public void onCompleted() { Log.d("TAG","onCompleted"); } @Override public void onError(Throwable e) { Log.d("TAG","onError"); } @Override public void onNext(Integer integer) { Log.d("TAG",integer+""); } });
运行结果:-1onCompleted
5. takeFirst(Func1)
Observable.from(ints2) .takeFirst(integer -> integer%2==0) .subscribe(new Subscriber<Integer>() { @Override public void onCompleted() { Log.d("TAG","onCompleted"); } @Override public void onError(Throwable e) { Log.d("TAG","onError"); } @Override public void onNext(Integer integer) { Log.d("TAG",integer+""); } });
takeFirst与first类似,除了这一点:如果原始Observable没有发射任何满足条件的数据,first会抛出一个NoSuchElementException,takeFist会返回一个空的Observable(不调用onNext()但是会调用onCompleted)。
运行结果:onCompleted
0 0
- Rxjava的学习之过滤操作符—first
- Rxjava学习之过滤操作符 — distinct
- Rxjava学习之过滤操作符—filter、elementAt
- RxJava 过滤操作符 first last single
- RxJava之过滤操作符
- RxJava—过滤操作符
- RxJava操作符总结之过滤
- RxJava操作符总结之过滤
- RxJava-过滤操作符
- RxJava过滤操作符
- Rxjava 过滤操作符
- RxJava的学习之变换操作符—map
- RxJava的学习之变换操作符—flatMap
- RxJava的学习之变换操作符—buffer
- Rxjava的学习之变换操作符—scan
- RxJava操作符之过滤操作符(五)
- RxJava过滤操作符 filter
- RxJava过滤操作符 debounce
- 子窗口不随着父窗口最小化而最小化
- 【分享】《小强升职记》读书笔记分享4
- Android 第一行代码学习报错整理
- docker, lxc, docker-compose, juju
- 【分享】《小强升职记》读书笔记分享5
- Rxjava的学习之过滤操作符—first
- 谢希仁计算机网络3
- [原创] Ubuntu 10.04 (with grub2)安装 Xen 4.0.1
- 大津法---OTSU算法
- Linux环境变量学习
- C++ 静态编联与动态编联
- CDNDNS简单学习
- ACM刷题之ZOJ————Marjar Cola
- 男人30岁之前要知道的事