上一篇文章介绍了rxjava的基本用法,和一些常用的操作符,以及rxjava的链式操作带来的好处。由于rxjava非常的强大,让我如此的痴迷,我打算写五篇文章,专门讲解rxjava 常见的操作符和用法,敬请期待。这篇文章主要讲解过滤操作符。

1.distinct操作符

过滤掉重复的数据项,只让还没有发送过数据项通过。

  rx.Observable.just("1","2","2","3","4").distinct(new Func1<String, String>() {@Overridepublic String call(String s) {return "key"+s;//这时候比较的是key+s  而不是比较s}}).subscribe(new Action1<String>() {@Overridepublic void call(String s) {Log.e(TAG,s);}});}

运行程序,输出结果 :

1

2

3

4

它的作用是去掉相同的元素,例如例子中去掉了2

2.ElementAt

只发射第n项数据

   rx.Observable.just("1","2","3").elementAt(1).subscribe(new Action1<String>() {//只发射第二个元素@Overridepublic void call(String s) {Log.e(TAG,s);}});rx.Observable.just("1","2","3").elementAtOrDefault(11,"11111").subscribe(new Action1<String>() {//只发射第二个元素@Overridepublic void call(String s) {Log.e(TAG,s);}});       

运行结果:

2

11111

elemntAt(1)发射第二项数据;elementAtOrDefault(11,“11111”),由于observable没有11找个索引元素,所以发送了默认的11111

3.first操作符

只发射第一项数据或者满足条件的第一项数据,如果你需要第一项数据,或者满足条件的第一项数据,可以使用该操作符

rx.Observable.just("1","2","3").first().subscribe(new Action1<String>() {@Overridepublic void call(String s) {Log.e(TAG,s);}});rx.Observable.just(1,2,3).first(new Func1<Integer, Boolean>() {@Overridepublic Boolean call(Integer integer) {if(integer>2) return true;return false;}}).subscribe(new Action1<Integer>() {@Overridepublic void call(Integer integer) {Log.e(TAG,integer+"");}});

运行结果:

1

3

4.last 操作符

last只发射最后一项数据,和first 正好相反。

rx.Observable.just(1,2,3,4)
.last().subscribe(new Action1<Integer>() {@Overridepublic void call(Integer integer) {Log.e(TAG,integer+"");}});

允许结果:

4

5.sample操作符

定期采样并发射 observable 最近的数据

rx.Observable.interval(300, TimeUnit.MILLISECONDS).sample(2,TimeUnit.SECONDS).subscribe(new Action1<Long>() {@Overridepublic void call(Long aLong) {Log.e(TAG,aLong+"");}});

运行结果:

6

13

observal 每300ms发射一个从0到n的数据,sample 每隔2s取一个observal 最近发射的数据,并发射出去。

6.skip操作符

跳过前n项数据,也就说不发射前n项数据。

rx.Observable.just(1,2,4,5,6).skip(2).subscribe(new Action1<Integer>() {@Overridepublic void call(Integer integer) {Log.e(TAG,integer+"");}});

运行结果:

4

5

6

前面2项数据跳过不发射。

所有的过滤操作符:

好了,今天的讲解了过滤操作符,写了这篇文章相信你很快就会理解。
过滤操作符不止这些,另外还有很多其他的过滤操作符,需要你们自己一个一个的摸索了。感谢大家,如果觉得可以点个赞吧,哈哈……
_


扫码关注公众号有惊喜

(转载本站文章请注明作者和出处 方志朋的博客)

转载于:https://www.cnblogs.com/forezp/p/9852192.html

一篇RxJava友好的文章(二)相关推荐

  1. 一篇RxJava友好的文章(一)

    转载请标明出处: http://blog.csdn.net/forezp/article/details/52886700 本文出自方志朋的博客 Rxjava在目前的开发中已经是如火如荼,非常的流行, ...

  2. Java开发者必读的10篇精选优秀技术文章

    作为最受欢迎的编程语言之一,Java已经走过了20个年头.从已经落寞的诺基亚到现在火热的电商系统,我们都能看到Java语言的身影.经过20年的历练,这门语言已经逐渐成熟,并经过很多大型系统的考验.社区 ...

  3. java负数右移_收入囊中篇---Java程序基础(二)

    前言: 本篇是接着上一篇更新的,如果没有阅读上一篇的话,可以查阅或回顾一下. 1.收入囊中篇---Java基础必备知识(一) 2.收入囊中篇---Java程序基础(二) Java程序基础目录 1.Ja ...

  4. php分页类 seo,HTML_写一个对搜索引擎友好的文章SEO分页类,使用jsp/php/asp等动态程序生成 - phpStudy...

    写一个对搜索引擎友好的文章SEO分页类 使用jsp/php/asp等动态程序生成的页面如何对搜索引擎友好呢?你可能想使用url_rewrite.不过,最好还是让同一个网址在任意时间对应的页面内容都是一 ...

  5. linux驱动篇之 driver_register 过程分析(二)bus_add_driver

    linux驱动篇之 driver_register 过程分析(二) 个人笔记,欢迎转载,请注明出处,共同分享 共同进步 http://blog.csdn.net/richard_liujh/artic ...

  6. 简书=鸡汤?爬取今日看点数据:1916篇简书热门文章可视化

    一.前言 最近写得两篇关于简书的数据可视化文章:<简书推荐作者风云榜(爬取简书app数据)>.<我的简书一月记:数据可视化>反响都还不错,因而将继续针对简书进行数据分析和可视化 ...

  7. .net 面试题系列文章二(附答案)

    .net 面试题系列文章二(附答案) 内容摘要:本文是.net 面试题系列的第二篇,该系列文章是对网上所有.net面试题的收重新集整理後的系列文章,囊括了c#面试题,vb.net面试题,asp.net ...

  8. 写一篇好的技术文章有多难?

    就我而言,一年里我也没写出几篇让自己满意的文章.因为写一篇好的技术文章真的很难. 对于一篇好的文章来说,它有这么一些要求: 构建文章所需的理论体系 实践及代码验证 公正又有所偏爱的观点 又要注意这么一 ...

  9. C++流操作练习:统计一篇英文(The_Holy_Bible.txt)文章中出现的单词和词频 并组成字典

    C++流操作练习:统计一篇英文(The_Holy_Bible.txt)文章中出现的单词和词频 并组成字典 一.题目 统计一篇英文(The_Holy_Bible.txt)文章中出现的单词和词频, 输入: ...

  10. 你做一篇微信公众号文章要多久?

    你做一篇微信公众号文章要多久? 君佳 北漂95后互联网人.公众号「愿君佳」外表内在都得捯饬漂亮 在这个问题下只说排版,真的弱爆了好吗,没有干货跟一些比较清奇的工具分享,我不会来回答这个问题. 前段时间 ...

最新文章

  1. css改变背景透明度
  2. Spark Streaming--实战篇
  3. [LCS]半个月的成果,用RTCClient开发的Robot!
  4. DEPHI中tform类的构造函数与FORMCREATE的关系
  5. 五层架构(MVC+biz+lib)
  6. Java:用POI读写Excel
  7. c语言中的运算符及其含义_按位运算符及其在C语言中与Example一起使用
  8. nginx+tomcat+memcached
  9. Expect学习笔记(1)
  10. AspUpload组件的安装及使用方法介绍
  11. 免费asp.net空间
  12. 【deepstream部署Yolov6】
  13. 谷歌gmail注册入口_如何删除您的Gmail帐户而不删除您的Google帐户
  14. 模态框获取页面请求数据
  15. 一场云端的“神仙打架”:BAT加华为的影响未来之争
  16. 如何在期货与现货市场之间套利?
  17. JavaScript脚本的学习
  18. mAPI(商户用API) v1.1发布
  19. 一键通(手机实现对讲机功能)
  20. 计算机对商务英语的不利之处,商务英语教学中计算机网络利弊分析论文.docx

热门文章

  1. Affinity Publisher for Mac排版设计工具
  2. 如何使用Wondershare UniConverter应用效果并调整音量
  3. 研磨设计模式学习笔记3--适配器模式Adapter
  4. 关于一些nginx的高级扩展应用
  5. 思科路由器的基本配置1
  6. WINDOWS资源编译器出错信息
  7. [C#]C#补习——控制流语句相关
  8. SOA平台之争:Java EE,还是.NET……
  9. ubuntu12.04升级svn到 1.7
  10. 35岁危机?请收下这部转型秘籍