RxJava2 / RxAndroid2操作符distinct去重

简介: RxJava2 / RxAndroid2操作符distinct去重distinct去除重复的数据,例如:package zhangphil.

RxJava2 / RxAndroid2操作符distinct去重


distinct去除重复的数据,例如:

package zhangphil.app;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.observers.DisposableObserver;
import io.reactivex.schedulers.Schedulers;

public class MainActivity extends AppCompatActivity {
    private final String TAG = getClass().getSimpleName();

    private CompositeDisposable mCompositeDisposable = new CompositeDisposable();

    private Integer[] test_data = {
            1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 9
    }; //故意设置若干重复的数据,等待去重复数据

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        test();
    }

    private void test() {
        DisposableObserver disposableObserver = new DisposableObserver<Integer>() {
            @Override
            public void onNext(Integer i) {
                Log.d(TAG, "#####开始#####");
                Log.d("数据", String.valueOf(i));
                Log.d(TAG, "#####结束#####");
            }

            @Override
            public void onComplete() {
                Log.d(TAG, "onComplete");
            }

            @Override
            public void onError(Throwable e) {
                Log.e(TAG, e.toString(), e);
            }
        };

        Observable<Integer> observable = Observable.fromArray(test_data);

        mCompositeDisposable.add(observable
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .distinct()
                .subscribeWith(disposableObserver));
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        // 如果退出程序,就清除后台任务
        mCompositeDisposable.clear();
    }
}



代码输出:

05-18 10:19:32.361 2346-2346/zhangphil.app D/MainActivity: #####开始#####
05-18 10:19:32.361 2346-2346/zhangphil.app D/数据: 1
05-18 10:19:32.361 2346-2346/zhangphil.app D/MainActivity: #####结束#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: #####开始#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/数据: 2
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: #####结束#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: #####开始#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/数据: 3
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: #####结束#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: #####开始#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/数据: 4
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: #####结束#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: #####开始#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/数据: 5
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: #####结束#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: #####开始#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/数据: 6
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: #####结束#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: #####开始#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/数据: 7
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: #####结束#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: #####开始#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/数据: 8
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: #####结束#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: #####开始#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/数据: 9
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: #####结束#####
05-18 10:19:32.362 2346-2346/zhangphil.app D/MainActivity: onComplete


相关文章
|
编解码 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)1
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)
903 1
RecyclerView禁止复用
RecyclerView禁止复用
2070 0
|
移动开发 ARouter 开发工具
开源最佳实践:Android平台页面路由框架ARouter
为了更好地让开发者们更加深入了解阿里开源,阿里云云栖社区在3月1号了举办“阿里开源项目最佳实践”在线技术峰会,直播讲述了当前阿里新兴和经典开源项目实战经验以及背后的开发思路,在本次在线技术峰会上,阿里云资深开发工程师刘志龙分享了Android平台页面路由框架ARouter的技术方案、解决的问题以及在实际场景中的最佳实践。
47800 2
|
Kotlin
Kotlin中接口、抽象类、泛型、out(协变)、in(逆变)、reified关键字的详解
Kotlin中接口、抽象类、泛型、out(协变)、in(逆变)、reified关键字的详解
220 0
Activity添加进入和退出动画的两种方式,解决黑色区域问题
Activity添加进入和退出动画的两种方式,解决黑色区域问题
|
Java 开发工具 Android开发
Android字体Font相关知识
Android字体简介 Android系统默认支持三种字体,分别为:“sans”,“serif”,“monospace”。 android.
4680 0
|
Java 开发工具 Android开发
Android修改aar包中的类文件并重新打包
Android修改aar包中的类文件并重新打包
1832 0
|
Android开发
Android HorizontalScrollView 横向滚动自动居中
Android HorizontalScrollView 横向滚动自动居中