java中contact方法_RxJava2 转换操作符之ContactMap()和flatMapIterable()

前言:

1、学习这两个操作符之前,请确保你读过这篇文章:RxJava2 转换操作符之FlatMap()方法,或者已经充分了解FlatMap()。

2、因为这两个操作符,跟FlatMap只有一点不同,所以,将它们独立的,合并在一篇中。

一、ContactMap操作符

ContactMap是用来解决FlatMap操作符,在转换数据的过程,会出现任务交叉的问题。如果,你对数据转换的过程,要求严格的按顺序执行。即执行完一个任务后,再执行另一个任务。那么,就用ContactMap替代FlatMap。用法一模一样,就换个名字而已。

c3f523e2206a2e9a50cd84fe6dba9ec9.png

ContactMap操作符流程图

代码示例:

public static void actionFlatMap() {

List list = Arrays.asList(1, 2, 3);

// 这里用了lambda。

Observable.fromIterable(list)

.concatMap(integer ->{

log("开始执行,第" + integer + "圆球的任务" + getThreadName());

return getObservable(integer);

}).subscribe(s ->log("已完成" + s + getThreadName()));

}

public static Observable getObservable(final int integer) {

return Observable.create((ObservableOnSubscribe) emitter ->{

emitter.onNext("第" + integer + "圆球的第1个棱形任务");

if(integer != 1) {

// 第2和第3个圆球的第二个任务延时。

Thread.sleep(5 * 1000);

}

emitter.onNext("第" + integer + "圆球的第2个棱形任务");

emitter.onComplete();

}).subscribeOn(Schedulers.newThread());

}

// 返回当前的线程名

public static String getThreadName() {

return " | ThreadName=" + Thread.currentThread().getName();

}

private static void log(String log) {

Log.d("FlatMap", log);

}

二、flatMapIterable操作符

flatMapIterable操作与flatMap,在流程上,大体都相同。唯一不同的是,flatMap是转一个Observable 转换成多个Observables。每一个Observable,最后又得返回一个Observable。而flatMapIterable在将一个Observable转换成多个Observables后,每一个Observable,只能返回一个Iterable。而不是另一个Observable。。。 Iterable,可以理解成返回一个list。

先上图,再上码:

a7ca8e0326da9e15c4d3b9da59a37e8f.png

flatMapIterable操作符流程图

代码示例:

public static void actionFlatMapIterable() {

List list = Arrays.asList(1, 2, 3);

Observable.fromIterable(list)

.flatMapIterable(new Function>() {

@Override

public Iterable apply(Integer integer) throws Exception {

return Arrays.asList(String.valueOf("a"+integer), String.valueOf("b"+integer), String.valueOf("c"+integer));

}

}).subscribe(new Consumer() {

@Override

public void accept(String s) throws Exception {

log("accept="+s);

}

});

}

这是输出:

D/TransformingOperations: accept=a1

D/TransformingOperations: accept=b1

D/TransformingOperations: accept=c1

D/TransformingOperations: accept=a2

D/TransformingOperations: accept=b2

D/TransformingOperations: accept=c2

D/TransformingOperations: accept=a3

D/TransformingOperations: accept=b3

D/TransformingOperations: accept=c3

以上是两个操作符的简介和示例代码,这两个比较简单,就不赘述了。下一篇是讲解:SwitchMap()操作符。

注意:

这个库里面有很多东西,RxJava2的转换操作符部分的demo位于:com.lyf.okmvp.demo.rxjava2包下的TransformingOperations类里面。

用法:

1、直接在com.lyf.okmvp.ui包下的MainActivity类里的onCreate()方法里面,直接调用:

TransformingOperations.actionContactMap(); // 静态方法。

TransformingOperations.actionFlatMapIterable(); // 静态方法。

2、也可以复制TransformingOperations类到你的项目里,去为所欲为。但前提时,你得有配置过RxJava和RxAndroid。配置方法,自行百度,或参考我的OkMVP库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java电话簿管理系统App类的属性和说明,方法及说明如下: 属性: 无 方法: 1. public static void main(String[] args) 该方法为程序入口,负责启动电话簿管理系统并提供用户交互界面。 2. private static void showMenu() 该方法用于显示电话簿管理系统的菜单,提供各种联系人管理功能的选择。 3. private static void addContact() 该方法用于添加联系人,包括输入联系人信息、检查输入合法性、将联系人信息保存至联系人列表等操作。 4. private static void deleteContact() 该方法用于删除联系人,包括输入联系人信息、检查联系人是否存在、将联系人信息从联系人列表删除等操作。 5. private static void updateContact() 该方法用于更新联系人信息,包括输入联系人信息、检查联系人是否存在、更新联系人信息至联系人列表等操作。 6. private static void searchContact() 该方法用于搜索联系人,包括输入搜索关键字、在联系人列表查找匹配联系人、显示搜索结果等操作。 7. private static void showContactList() 该方法用于显示联系人列表,包括遍历联系人列表、显示每个联系人的信息等操作。 8. private static void saveContactListToFile() 该方法用于将联系人列表保存至文件,包括创建文件、将联系人列表信息写入文件等操作。 9. private static void loadContactListFromFile() 该方法用于从文件加载联系人列表,包括读取文件、解析文件内容、将联系人信息添加至联系人列表等操作。 说明: App类方法主要用于实现电话簿管理系统的各种功能,包括添加、删除、更新、搜索联系人等操作,同时也包括菜单显示、联系人列表展示、文件读写等操作。这些方法通过调用其他模块的对象实现各自的功能。例如,添加联系人时需要调用Contact类的对象来创建新的联系人并添加至联系人列表,而搜索联系人时需要调用Search类的对象来在联系人列表查找匹配联系人。通过这些方法的组合和调用,App类实现了整个电话簿管理系统的完整功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值