rxjava2代码实战1--Map操作符
来源:互联网 发布:淘宝兼职要身份证干么 编辑:程序博客网 时间:2024/05/18 15:54
map操作符
可以将一个对象使用指定的方法转换为另一个对象再发射出去
demo下载地址:
GitHub - GodisGod/Rxjava2Test
https://github.com/GodisGod/Rxjava2Test
代码实战:
根据学生成绩判断老师好坏并打印结果
学生类:使用了Kotlin代码
class Student(name: String = "", score: Int = 0) { var name = name var score = score}
老师类:
public class Teacher { private String name; private boolean isGood; public Teacher(String name, boolean isGood) { this.name = name; this.isGood = isGood; } //省略了...get/set方法... @Override public String toString() { return "Teacher{" + "name='" + name + '\'' + ", isGood=" + isGood + '}'; }}
map转换单个对象
有一个学生叫LHD,他得了100分。当学生分数大于90分的时候老师为好老师
关键代码:
observableSigle = Observable.create(new ObservableOnSubscribe<Student>() { @Override public void subscribe(ObservableEmitter<Student> e) throws Exception { //学生 Student student = new Student("LHD", 100); e.onNext(student); e.onComplete(); } }).map(new Function<Student, Teacher>() {//使用map操作符进行转换 @Override public Teacher apply(Student student) throws Exception { //将学生根据业务要求转换为老师并发射出去 String name = student.getName() + "的老师"; boolean isGood = student.getScore() >= 90; Teacher teacher = new Teacher(name, isGood); return teacher; } }); //点击按钮触发转换 btnMapSignle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { tv_map_result.setText("转换单个\n:"); observableSigle .subscribeOn(Schedulers.io())//io线程发送 .observeOn(AndroidSchedulers.mainThread())//主线程接收 .subscribe(new Consumer<Teacher>() { @Override public void accept(Teacher teacher) throws Exception { Log.i("LHD", teacher.toString()); tv_map_result.append(teacher.toString() + "\n"); } }, new Consumer<Throwable>() {//异常处理 @Override public void accept(Throwable throwable) throws Exception { Log.i("LHD", "Consumer<Throwable> = " + throwable.getMessage()); } }, new Action() {//最终都会走到这里 @Override public void run() throws Exception { Log.i("LHD", "Action"); } }); } });
结果:
map转换list
有多个学生,他们得分各不相同。当学生分数大于90分的时候老师为好老师
构建学生list
public class GetBeansUtil { public static List<Student> getStudents() { final Student student1 = new Student("LHD", 90); Student student2 = new Student("LHD1", 80); Student student3 = new Student("LHD2", 70); Student student4 = new Student("LHD3", 96); final List<Student> list = new ArrayList<Student>(); list.add(student1); list.add(student2); list.add(student3); list.add(student4); return list; }}
使用map进行转换
final List<Student> list = GetBeansUtil.getStudents(); //发送list的每个item并使用map转换 observableList = Observable.fromIterable(list) .map(new Function<Student, Teacher>() { @Override public Teacher apply(Student student) throws Exception { String name = student.getName() + "的老师"; boolean isGood = student.getScore() >= 90; Teacher teacher = new Teacher(name, isGood); return teacher; } });
//点击按钮开始发射事件
btnMapList.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { tv_map_result.setText("转换list\n:"); observableList .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<Teacher>() {//当调用subscribe才会开始发射事件 @Override public void accept(Teacher teacher) throws Exception { Log.i("LHD", teacher.toString()); tv_map_result.append(teacher.toString() + "\n"); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { Log.i("LHD", "Consumer<Throwable> = " + throwable.getMessage()); } }, new Action() { @Override public void run() throws Exception { Log.i("LHD", "Action"); } }); } });
结果:
Teacher{name='LHD的老师', isGood=true}Teacher{name='LHD1的老师', isGood=false}Teacher{name='LHD2的老师', isGood=false}Teacher{name='LHD3的老师', isGood=true}
以上就是map操作符的用法啦。
阅读全文
0 0
- rxjava2代码实战1--Map操作符
- rxjava2代码实战2--zip操作符
- RxJava2操作符Map
- rxjava2代码实战3--flatMap,concatMap操作符
- rxjava2代码实战4--interval,take操作符clipdrawable制作图片进度条
- RxJava2 / RxJava2操作符scan
- RxJava2笔记(4)—操作符.map()
- rxjava2操作符
- rxjava2代码实战5--distinct,filter,buffer
- RxJava2 实战知识梳理(1)
- RxJava2.0中map操作符用法和源码分析(四)
- 小白学习Rxjava2,从零开始到实战(三) 操作符
- 小白学习Rxjava2,从零开始到实战(三) 操作符
- RxJava2 / RxAndroid2操作符take
- RxJava2 / RxAndroid2操作符skip
- RxJava2.0教程操作符
- Rxjava2.0 再探---操作符
- RxJava2 / RxAndroid2操作符skip
- Python之正则表达式
- Re+Selenium新手爬取猫眼Top 100
- [Maven Settings.xnl 开发最优配置]
- 欢迎使用CSDN-markdown编辑器
- 决策树和CART决策树
- rxjava2代码实战1--Map操作符
- Hibernate三种持久态
- 7-1 求二叉树的叶子结点个数
- 正向代理与反向代理
- 从乌镇大佬“饭局的诱惑”中我们可以解读出什么?
- Python之面向对象
- HTML5中新增标签及简介
- 中值坐标及其应用(仅讨论图像变形与纹理参数化)
- The summary of the twelveth week of the first year of master's degree