卧疾丰暇豫,翰墨时间作。这篇文章主要讲述RxJava的操作符相关的知识,希望能为你提供帮助。
@[TOC]
Rxjava的操作符
创建型操作符
interval操作符是按照时间间隔来进行输出
Observable.interval(10, TimeUnit.MILLISECONDS)
.subscribe(aLong ->
log.info(aLong.toString()));
这段代码每隔10毫秒输出一次
defer操作符是延迟创建,当有观察者订阅的时候才会输出消息
Observable observable = Observable.just(foo.get());
Observable dObservable = Observable.defer(() ->
Observable.just(foo.get()));
just操作符用来创建一个主题,并将参数弹出。
Observable.just("hello world" )
.subscribe(s ->
log.info("just string->
" + s));
from操作符是以数组作为输入,创建主题对象,并将数组的元素一个一个输出
String[] items = "b", "c", "d", "e";
Observable.from(items)
.subscribe(s ->
log.info("just string->
" + s));
range是整数范围作为输入,包括的区间的上限和下限
bservable.range(1, 8)
.subscribe(i ->
log.info("just int->
" + i));
这行代码会输出1到8的所有整数
转换操作符
map操作符是转换的方法,接元素进行转换后弹出
这段代码是将所有元素乘以4之后输出
Observable.range(1, 4)
.map(i ->
i *i)
.subscribe(i ->
log.info(i.toString()));
【RxJava的操作符】scan操作符是将每个数据累积,它会将上一个项的数据累积作为下一项的输入数据。
flatMap操作符是将元素变成一个新的主题后输出
Observable.range(1, 4)
.flatMap(i ->
Observable.range(1, i).toList())
.subscribe(list ->
log.info(list.toString()));
这段代码输出结果为四个数组
过滤型操作符
过滤型操作符顾名思义就是对结果进行过滤
Filter操作符这段代码输出的是能被5整除的数
Observable.range(1, 20)
.filter(integer ->
integer%5==0)
.subscribe(i ->
log.info("filter int->
" + i));
distinct是对消息重复数据过滤,已经发出去的元素不再发出
Observable.just("apple", "pair", "banana", "apple", "pair")
.distinct()//使用distinct过滤重复元素
.subscribe(s ->
log.info("distinct s->
" + s));
输出结果为apple pair 和banana
总结
RxJava的操作符有创建型操作符、转换操作符和过滤型操作符,然后分别对具体的方法进行了介绍,除此之外还有别的运算符,我们在下一篇文章中再介绍。
推荐阅读
- 如何使用AIRIOT物联网低代码平台进行报表管理()
- MongoDB数据库入门
- VMware Tanzu Community Edition 部署非托管集群
- 基于SSM+Shiro+Bootstrap实现用户权限管理系统
- netty系列之:kequeue传输协议详解
- 你该搞清楚的体系化安全思维
- VMWare实践(命令行方式升级ESXI6.7到最新版本)
- Unity集成华为游戏服务SDK方式(Unity集成Android插件)
- 520,用Python定制你的《本草纲目女孩》