zoukankan      html  css  js  c++  java
  • List集合中剔除重复的数据

    一、当要往数据库中批量添加数据的时候,前提是要把重复的数据先剔除掉,再添加到数据库里面,下面使用了两种方法实现该需求。

           1、重新定义一个集合,把传进来的数据赋值给这个集合,然后把数据库中已存在的数据跟新添加的数据进行比较,如果数据重复,那么就把这条数据重新定义的集合里面剔除掉,最后再把新定义的集合中剩余的数据保存到数据库中即可,具体的代码如下截图:

    代码如下:

        @Override
        public List<StudentScore> saveStudenScore(List<StudentScore> studentScoreList) {
            //先找出所有的数据
            List<StudentScore> exitData=studentScoreDao.findAll();
            List<StudentScore> repeatData=new ArrayList<>();
            List<StudentScore> newstudentScore = new ArrayList<>();
    
            newstudentScore.addAll(studentScoreList);
    
            //排除掉重复的数据
            for(StudentScore exit:exitData){
                for(StudentScore newData:studentScoreList){
                    if(newData.getIdCard().equals(exit.getIdCard())&&newData.getExamNumber().equals(exit.getExamNumber())){
                        repeatData.add(newData);
                        newstudentScore.remove(newData);
                    }
                }
            }
            studentScoreDao.saveAll(newstudentScore);
            return repeatData;

            2、第二种方法是直接使用for循环,但是要注意的一点是因为for循环实际是循环列表的下标(索引),但是因为把集合中的数据remove掉,可能会引起下标越界的问题,所以每次移除的时候要记得下标要减减,具体如下截图:

    代码如下:

            for(int i=0;i<results.size();i++){
                for(EntityUser exitUser:userList){
                    System.out.println(exitUser);
                        String exitIdCar= exitUser.getIdCard();
                        String exitPhone = exitUser.getPhone();
                        if(results.get(i).getIdCard().equals(exitIdCar)||results.get(i).getPhone().equals(exitPhone)){
                            removeList.add(results.get(i));
                            results.remove(i);
                            i--;
                            break;
                        }
    
                }
            }
  • 相关阅读:
    矩阵
    字符串算法 KMP算法 BF算法的升级版
    字符查找算法 BF算法
    查找:二叉查找树升级版 平衡二叉树(AVL树) 2020年8月
    查找:二叉查找树 c++ 2020年8月
    基数排序,也叫关键码排序
    归并排序,冯诺依曼首次提出。分为递归实现、非递归实现
    堆排序,升级版的选择排序
    P1233 木棍加工【dp】
    P2758 编辑距离【dp】
  • 原文地址:https://www.cnblogs.com/yanghr/p/12897835.html
Copyright © 2011-2022 走看看