根据两个集合唯一标识,筛选新增、删除、修改数据,并保存

根据两个集合唯一标识,筛选新增、删除、修改数据,并保存

业务场景:

很多业务场景需要程序员去比较数据,然后更新数据,下面代码就是一种清晰的解决思路

代码:

import java.util.ArrayList;
import java.util.List;

public class DataFilter {

    /**
     * 功能描述: 根据两个集合唯一标识,筛选新增、删除、修改数据,并保存
     *
     * @Param: [userBoList, userList]
     * @Return: void
     * @Author: XinHai.Ma
     * @Date: 2020/12/5 22:57
     */
    public static void filter(List<UserBo> userBoList, List<User> userList) {
        List<UserBo> userBoSameList = new ArrayList<>(); // UserBo与User共有的数据
        List<User> userSameList = new ArrayList<>(); // UserBo与User共有的数据
        for (UserBo userBo : userBoList) {
            for (User user : userList) {
                if (userBo.getUsername().equals(user.getUsername())) {
                    user.setPassword(userBo.getPassword());
                    userBoSameList.add(userBo);
                    userSameList.add(user);
                }
            }
        }

        userBoList.removeAll(userBoSameList); // 要增加的数据
        userList.removeAll(userSameList); // 要删除的数据

        // 保存要新增的数据
        if (userBoList.size() > 0) {
            List<User> users = new ArrayList<>();
            for (UserBo userBo : userBoList) {
                User user = new User();
                user.setUsername(userBo.getUsername());
                user.setPassword(userBo.getPassword());
                users.add(user);
            }
            //this.dao.saveAll(users);
            System.out.println("新增数据: " + users);
        }

        // 逻辑删除数据
        if (userList.size() > 0) {
            for (User user : userList) {
                user.setIsDelete(1); // 删除状态
            }
            //this.dao.saveAll(userList);
            System.out.println("删除数据: " + userList);
        }

        // 要保存的修改数据
        if (userSameList.size() > 0) {
            //this.dao.saveAll(userSameList);
            System.out.println("修改数据: " + userSameList);
        }
    }

    public static void main(String[] args) {
        List<UserBo> userBoList = new ArrayList<>();
        List<User> userList = new ArrayList<>();
        // 初始化数据
        for(long i=0; i<10; i++) {
            if(i > 5) {
                User user = new User(i, "username"+(i+1), "password"+(i+1));
                userList.add(user);
            }
            UserBo userBo = new UserBo(i, "username"+i, "password"+i);
            userBoList.add(userBo);
        }
        System.out.println("userList数据: " + userList);
        System.out.println("userBoList数据: " + userBoList);
        // 根据userBo集合同步userList数据
        filter(userBoList, userList);
    }

}

/**
 * 功能描述: 用户
 *
 * @Param:
 * @Return:
 * @Author: XinHai.Ma
 * @Date: 2020/12/5 22:54
 */
class User {
    private Long id;
    private String username;
    private String password;

    private Integer isDelete;

    public Integer getIsDelete() {
        return isDelete;
    }

    public void setIsDelete(Integer isDelete) {
        this.isDelete = isDelete;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public User() {
    }

    public User(Long id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", isDelete=" + isDelete +
                '}';
    }
}

/**
 * 功能描述: 用户Bo
 *
 * @Param:
 * @Return:
 * @Author: XinHai.Ma
 * @Date: 2020/12/5 22:54
 */
class UserBo {
    private Long id;
    private String username;
    private String password;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public UserBo(Long id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public UserBo() {
    }

    @Override
    public String toString() {
        return "UserBo{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

控制台打印信息:

userList数据: [User{id=6, username='username7', password='password7', isDelete=null}, User{id=7, username='username8', password='password8', isDelete=null}, User{id=8, username='username9', password='password9', isDelete=null}, User{id=9, username='username10', password='password10', isDelete=null}]
userBoList数据: [UserBo{id=0, username='username0', password='password0'}, UserBo{id=1, username='username1', password='password1'}, UserBo{id=2, username='username2', password='password2'}, UserBo{id=3, username='username3', password='password3'}, UserBo{id=4, username='username4', password='password4'}, UserBo{id=5, username='username5', password='password5'}, UserBo{id=6, username='username6', password='password6'}, UserBo{id=7, username='username7', password='password7'}, UserBo{id=8, username='username8', password='password8'}, UserBo{id=9, username='username9', password='password9'}]
新增数据: [User{id=null, username='username0', password='password0', isDelete=null}, User{id=null, username='username1', password='password1', isDelete=null}, User{id=null, username='username2', password='password2', isDelete=null}, User{id=null, username='username3', password='password3', isDelete=null}, User{id=null, username='username4', password='password4', isDelete=null}, User{id=null, username='username5', password='password5', isDelete=null}, User{id=null, username='username6', password='password6', isDelete=null}]
删除数据: [User{id=9, username='username10', password='password10', isDelete=1}]
修改数据: [User{id=6, username='username7', password='password7', isDelete=null}, User{id=7, username='username8', password='password8', isDelete=null}, User{id=8, username='username9', password='password9', isDelete=null}]

 

posted @ 2020-12-05 23:32  尘世间迷茫的小书童  阅读(867)  评论(0编辑  收藏  举报