根据两个集合唯一标识,筛选新增、删除、修改数据,并保存
业务场景:
很多业务场景需要程序员去比较数据,然后更新数据,下面代码就是一种清晰的解决思路
代码:
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}]
原文:https://www.cnblogs.com/mxh-java/p/14091635.html