专栏首页Android干货集合去重方法,自备

集合去重方法,自备

 /**
     * xqx 去除未知object集合的重复数据
     * @param oldList  老数据集合
     * @param newList  新数据集合
     * @param key       唯一标识
     * @param <T>
     * @return
     */
    public static <T>ArrayList removeRepeatElement(List<T> oldList , List<T> newList , String key){
        ArrayList<T> resultList = new ArrayList<>();
        ArrayList<String> keys = new ArrayList<>();// 老数据中存在的唯一标识
        // 获取到原来数据中的所有位置标识
        for (int i = 0; i < oldList.size(); i++) {
            try {
                JSONObject oldDataJson = new JSONObject(new Gson().toJson(oldList.get(i), Object.class));
                String currentKey = String.valueOf(oldDataJson.get(key));
                if (!keys.contains(currentKey)){
                    keys.add(currentKey);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        // 遍历新的数据,如果有相同的唯一标识,则remove
        for (int i = newList.size()-1; i >=0 ; i--) {
            try {
                JSONObject newDataJson = new JSONObject(new Gson().toJson(newList.get(i), Object.class));
                String currentKey = String.valueOf(newDataJson.get(key));
                if (keys.contains(currentKey)){
                    // 重复key
                    newList.remove(i);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        // 避免返回null
        if (newList!=null){
            resultList.addAll(newList);
        }
        return resultList;
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 项目实战工具类(二):ZipUtils(压缩/解压缩文件相关)

    听着music睡
  • Android项目实战(五十一):浅谈GreenDao

    HX_User类会变成下面情况,注意 属性值的get和set方法不要自己写,是make project之后自动生成的

    听着music睡
  • Android项目实战(二十五):Android studio 混淆+打包+验证是否成功

    听着music睡
  • RTSP协议视频平台EasyNVR接入视频综合管理平台EasyNVS可以自由修改配置吗?

    我们知道EasyNVS是一个视频综合管理平台,能够将不同网络下的EasyNVR进行统一的接入和管理。新版的EasyNVS在原有的基础上,除了能够接入EasyNV...

    EasyNVR
  • Android后台发送邮件进行日志反馈

    最近在和解决用户反馈的问题,但是出现了不方便的事情.就是获取用户操作日志的问题.想来想去还是用比较隐晦的方法---发送邮件.(需要告知用户,不然会当成流氓的!)

    open
  • 给你的博客文章加入”展开/收缩功能‘’

    Youngxj
  • JavaWeb——HTTP请求协议及request对象使用方法一点通与request登录实战案例(含BeanUtils类的使用)

    HTTP,Hyper Text Transfer Protocol,超文本传输协议,定义了客户端和服务器通信时,发送数据的格式。其特点是:

    Winter_world
  • LevelDB 代码撸起来!

    LevelDB 的大致原理已经讲完了,本节我们要亲自使用 Java 语言第三方库 leveldbjni 来实践一下 LevelDB 的各种特性。这个库使用了 J...

    老钱
  • PHP面向对象核心(二)——继承、多态、接口

    PHP面向对象核心(二) (原创内容,转载请注明来源,谢谢) 三、继承与多态 3.1 继承 1、继承是类级别的复用,关键词为extends;多态是方法级别的复用...

    用户1327360
  • 0605-5.16.1-CM告警SNMP中DateAndTime类型解析

    Fayson在前面的文章《如何通过Cloudera Manager配置使用SNMP方式转发告警》和《CM告警SNMP对接补充》介绍了使用SNMP的方式对接,对接...

    Fayson

扫码关注云+社区

领取腾讯云代金券