有个接口需求,前端点击保存发送到后端的list集合,需要找出其中的新增、修改、删除元素,进行批量操作。 (这里我是拿Student学生类来做比较)
实体类Student
@Data
public class Student {
private Integer id;
private String name;
private String age;
private String address;
private String score;
}
具体方法
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class NewOldComparer {
//新增元素集合
private List<Student> insertIds = new ArrayList<>();
//修改元素集合
private List<Student> updateIds = new ArrayList<>();
//删除元素集合
private List<Student> deleteIds = new ArrayList<>();
public List<Student> insertIds() {
return insertIds;
}
public List<Student> updateIds() {
return updateIds;
}
public List<Student> deleteIds() {
return deleteIds;
}
public void NewOldComparer(List<Student> newIds, List<Student> oldIds) {
if (null != newIds && newIds.size() > 0) {
hasNewIds(newIds, oldIds);
} else {
//newIds为空表示后端oldIds全部删除
noHasNewIds(oldIds);
}
}
private void hasNewIds(List<Student> newIds, List<Student> oldIds) {
if (oldIds.size() == 0) {
this.insertIds = newIds;
} else {
for (Student newId : newIds) {
//可以根据他有没有传入id 来判断是否为新增的数据 代码要改
if (newId.getId() == null) {
this.insertIds.add(newId);
} else {
this.updateIds.add(newId);
}
}
//需要删除的,将页面传过来的新集合的id获取得到List集合
List<Integer> newidList = newIds.stream().map(Student::getId).collect(Collectors.toList());
for (Student oldId : oldIds) {
//如果新集合中不包含就集合元素的id就将其加入到删除集合
if (!newidList.contains(oldId.getId())) {
this.deleteIds.add(oldId);
}
}
}
}
private void noHasNewIds(List<Student> oldIds) {
if (null != oldIds && oldIds.size() > 0) {
this.deleteIds = oldIds;
}
}
}
测试类
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
public class OldNewComparerTest {
@Test
public void tset01() {
//数据库存在的id
List<Student> oldIds = new ArrayList<>();
oldIds.add(new Student(1,"张3","12"));
oldIds.add(new Student(2,"张4","12"));
oldIds.add(new Student(3,"张5","12"));
//页面传入的新id
List<Student> newIds = new ArrayList<>();
newIds.add(new Student(1,"张3","12"));
newIds.add(new Student(2,"张11","12"));
newIds.add(new Student("张6","12","中国"));
NewOldComparer newOldComparer = new NewOldComparer();
newOldComparer.NewOldComparer(newIds,oldIds);
System.out.println("需要新增的元素有-->" + newOldComparer.insertIds());
System.out.println("需要修改的元素有-->" + newOldComparer.updateIds());
System.out.println("需要删除的元素有-->" + newOldComparer.deleteIds());
}
}
结果
需要新增的id有-->[Student(id=null, name=张6, age=12, address=中国, score=null, clound_kh=null, testName=null)]
需要修改的id有-->[Student(id=1, name=张3, age=12, address=null, score=null, clound_kh=null, testName=null), Student(id=2, name=张11, age=12, address=null, score=null, clound_kh=null, testName=null)]
需要删除的id有-->[Student(id=3, name=张5, age=12, address=null, score=null, clound_kh=null, testName=null)]