RXJava入门03
来源:互联网 发布:飞机pull up知乎 编辑:程序博客网 时间:2024/05/21 19:26
RXJava数据传输过滤操作
在被观察者发送数据给观察者的时候,在数据传输的时候,有可能需要对数据进一步过滤。以下的教程揽括了大部分过滤操作的函数。
1.过滤重复选项的Distinct方法
private static ArrayList initStudents() { ArrayList<Student> persons = new ArrayList<>(); persons.add(new Student("张三", 17)); persons.add(new Student("张三", 22)); persons.add(new Student("李四", 18)); persons.add(new Student("王五", 19)); return persons; } public static class Student { public String name; public int age; public Student(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } }public static void test10() { Observable .from(initStudents()) .distinct(new Func1<Student, String>() { @Override public String call(Student o) { return o.name; } }) .subscribe(new Action1() { @Override public void call(Object o) { Log.e("TAG", "call :" + o); } }); }2.Filter方法过滤指定条件的数据public static void test9() { // 需求:从1打印到9大于5的数字 Observable .range(1, 9) .filter(new Func1<Integer, Boolean>() { @Override public Boolean call(Integer integer) { return integer > 5; } }) .subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.e("TAG", "call: " + integer); } }); }3.获取队列中某些数据First&Last&ElementAtpublic static void test10() { Observable .from(initStudents()) .distinct(new Func1<Student, String>() { @Override public String call(Student o) { return o.name; } }) //.first()// 获取第一个元素 //.last() // 获取最后一个元素 .elementAt(1)// 指定索引位置(索引越界就会报出异常) .subscribe(new Action1() { @Override public void call(Object o) { Log.e("TAG", "call :" + o); } }); }4.获取指定集合的数据Take&TakeLastpublic static void test11() { // 获取队列前三个元素 Observable .from(initStudents()) //.take(3)//获取队列的前三个元素 .takeLast(2) // 获取最后的n个元素 .subscribe(new Action1() { @Override public void call(Object o) { Log.e("TAG", "call :" + o); } }); }5.Sample&IgnoreElements使用较少public static void test12() {// Observable.interval(1000, TimeUnit.MILLISECONDS)//每秒发送1个数字// .sample(2000, TimeUnit.MILLISECONDS)//每2秒采样一次// .subscribe(new Action1<Long>() {// @Override// public void call(Long aLong) {// Log.e("TAG", "call: " + aLong);// }// }); Observable.just(1,2,3,4,1) .ignoreElements()// 不发送消息,直接发送onCompleted() .subscribe(new Subscriber<Integer>() { @Override public void onCompleted() { Log.e("TAG", "onCompleted: "); } @Override public void onError(Throwable e) { } @Override public void onNext(Integer integer) { Log.e("TAG", "ontext: "+integer); } }); }
阅读全文
0 0
- RXJava入门03
- RxJava入门
- RxJava 入门
- RxJava 入门
- RxJava 入门
- RXJava入门
- RxJava 入门
- RxJava入门
- Rxjava入门
- RxJava 入门
- RxJava 入门
- RxJava入门
- RxJava入门
- RXJava入门
- RxJava入门
- RxJava入门
- RxJava入门
- RxJava 的使用入门
- 对于eclipse写java程序时,想查看一下java源代码,出现Source not found 的原因与解决办法
- 数据结构与算法(Python)-python快速入门篇1
- getParameter、getParameterValues、getParameterMap用法详解
- POJ6071 Lazy Running(最短路)
- C11新特性
- RXJava入门03
- Json web token-基于JSon在网络应用之间传递声明的开放标准
- Vuforia Target Manager Vuforia目标经理
- 为什么在sys.setdefaultencoding之前要写reload(sys)
- JVM之java程序编译和运行的过程-yellowcong
- JS散列表
- 创建定时任务
- Mysql 系列——数据库设计-(目录)--大学十年
- javaseday31补充(反射 三种获取字节码对象 获取空参有参对象 进行构造函数和无参有参函数使用)