我的RxJava学习之旅 四

distinct 去除重复数据

public static void test13() {
        // 过滤重复的数据
        List<Student> list = new ArrayList<>();
        list.add(new Student("张三",18));
        list.add(new Student("李四",18));
        list.add(new Student("王五",18));
        list.add(new Student("张三",28));

        Observable
                .from(list)
                .distinct(new Func1<Student, String>() {
                    @Override
                    public String call(Student student) { // 这里表示已学生的名字来作为去重的判断依据
                        return student.name;
                    }
                })
                .subscribe(new Action1<Student>() {
                    @Override
                    public void call(Student student) {
                        Log.v(TAG, "...call = " +student.name + " " + student.age);
                    }
                });

    }

Filter 过滤:

public static void test14(){
        Observable
                .range(1,9)
                .filter(new Func1<Integer, Boolean>() {
                    @Override
                    public Boolean call(Integer integer) {
                        return integer > 5;  // 大于5的数据才打印
                    }
                })
                .subscribe(new Action1<Integer>() {
                    @Override
                    public void call(Integer integer) {
                        Log.v(TAG, "...call = " + integer);
                    }
                });

    }

first/last/eleelementAt() 过滤数据

public static void test15() {
        // 过滤重复的数据
        List<Student> list = new ArrayList<>();
        list.add(new Student("张三",18));
        list.add(new Student("李四",18));
        list.add(new Student("王五",18));
        list.add(new Student("张三",28));

        Observable
                .from(list)
                .distinct(new Func1<Student, String>() {
                    @Override
                    public String call(Student student) {
                        return student.name;
                    }
                })
//                .first()
//                .last()
                .elementAt(1)  // 根据索引 下标不能越界
                .subscribe(new Action1<Student>() {
                    @Override
                    public void call(Student student) {
                        Log.v(TAG, "...call = " +student.name + " " + student.age);
                    }
                });

    }

take/takelast

public static void test16() {
        // 过滤重复的数据
        List<Student> list = new ArrayList<>();
        list.add(new Student("张三",18));
        list.add(new Student("李四",18));
        list.add(new Student("王五",18));
        list.add(new Student("张三",28));

        Observable
                .from(list)
//                .take(2)
                .takeLast(2) // 获取数组最后两个数据
                .subscribe(new Action1<Student>() {
                    @Override
                    public void call(Student student) {
                        Log.v(TAG, "...call = " +student.name + " " + student.age);
                    }
                });

    }

Sample&IgnoreElements

Observable
.interval(1000, TimeUnit.MILLISECONDS)//每秒发送1个数字
.sample(2000,TimeUnit.MILLISECONDS)//每2秒采样一次
.subscribe(new Action1<Long>() {
@Override
public void call(Long aLong) {
Log.i(TAG, "call: "+aLong);
}
});输出的是0 2 4 6 8......
Observable.just(1, 2, 3, 4, 1)
.ignoreElements()//不发送任何信息 直接发送onCompleted()
.subscribe(new Subscriber<Integer>() {
@Override
public void onCompleted() {
Log.i(TAG, "onCompleted: ");
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Integer integer) {
Log.i(TAG, "onNext: "+integer);
}
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

plx_csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值