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; } } }
相关推荐
yangkang 2020-11-09
lbyd0 2020-11-17
sushuanglei 2020-11-12
85477104 2020-11-17
KANSYOUKYOU 2020-11-16
wushengyong 2020-10-28
lizhengjava 2020-11-13
星月情缘 2020-11-13
huangxiaoyun00 2020-11-13
luyong0 2020-11-08
腾讯soso团队 2020-11-06
Apsaravod 2020-11-05
PeterChangyb 2020-11-05
gaobudong 2020-11-04
wwwjun 2020-11-02
gyunwh 2020-11-02
EchoYY 2020-10-31
dingyahui 2020-10-30