两个集合取出不同的数据和相同的数据

两个集合取出不同的数据和相同的数据

我这里的业务场景是两个数据表的数据需要做对比(这里用A表和B表),需要以A表的数据为基础表,如果A表和B表的数据没有交叉数据,那就全部取A表数据,如果有交叉数据就要把B表的原始数据保留,同时再找出AB不同的数据封装在一个集合返回给前端

  1. 代码处理如下:

实体类

@Data
class UserEntity{
          
   
    private String id;
    private String name;
    private String age;
}

业务代码

//封装返回给前端的List
List<UserEntity> userEntiytListVOS = new ArrayList<>();
//这里是a表的数据集合
List<UserEntity> a = userMapper.findAll()
//这里是b表的数据集合
List<UserEntity> b = userMapper.findAll()

//遍历A表数据
 for (UsereEntiy userA : a) {
          
   
     UserEntiy result = new UserEntity();
     //标记
     int tag = 0;
     //遍历B表数据
     for (UsereEntiy userB : b) {
          
   
     	 //如果name和id相等就记录一下,并且直接赋值给result
       if (userA.getName().equals(userB.getName()) && userA.getId().equals(userB.getId())) {
          
   
          BeanUtils.copyProperties(userB, result);
          tag++;
        }
     }
     //如果标记为0则数据不同就取userA表中的数据
     if (tag == 0) {
          
   
       BeanUtils.copyProperties(userA, result);
     }
     //最后返回的voList
     userEntiytListVOS.add(result);
 }
经验分享 程序员 微信小程序 职场和发展