以Student对象为例,Student属性如下:
public class Student {
public int id;
public String name;
public student(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "student{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
初始化两个list集合,里面放不同的student对象:
student s1 = new student(1,"zz");
student s2 = new student(2,"xx");
student s3 = new student(3,"cc");
student s4 = new student(4,"vv");
student s5 = new student(5,"bb");
List<student> list1 = new ArrayList<>();
list1.add(s1);
list1.add(s2);
list1.add(s3);
list1.add(s4);
student s11 = new student(1,"aa");
student s22 = new student(2,"ss");
student s33 = new student(3,"ff");
student s44 = new student(4,"dd");
student s55 = new student(5,"ww");
List<student> list2 = new ArrayList<>();
list2.add(s22);
list2.add(s44);
list2.add(s11);
list2.add(s55);
list2.add(s33);
利用map 筛选相同和不同的对象
// 将list1中的学生对象添加到map中
for (Student student : list1) {
map.put(student.getId(), student);
}
// 遍历list2,如果map中存在相同ID的学生对象,则添加到sameObjects中
for (Student student : list2) {
if (map.containsKey(student.getId())) {
sameObjects.add(student);
}
}
System.out.println("相同的对象:");
for (Student student : sameObjects) {
System.out.println("ID: " + student.getId() + ", Name: " + student.getName());
//此处调用方法 做数据库更新操作
//此处调用方法 做数据库更新操作
//此处调用方法 做数据库更新操作
//此处调用方法 做数据库更新操作
}
System.out.println("-------------------------");
List<Student> diffObjects = new ArrayList<>();
Map<Integer, Student> map1 = new HashMap<>();
// 将list1中的学生对象添加到map中
for (Student student : list1) {
map1.put(student.getId(), student);
}
// 遍历list2,如果map中不存在相同ID的学生对象,则添加到diffObjects中
for (student student : list2) {
if (!map1.containsKey(student.getId())) {
diffObjects.add(student);
}
}
// 遍历list1,如果map中不存在相同ID的学生对象,则添加到diffObjects中
for (Student student : list1) {
if (!map1.containsKey(student.getId())) {
diffObjects.add(student);
}
}
// 输出不同的对象
System.out.println("不同的对象:");
for (Student student : diffObjects) {
System.out.println("ID: " + student.getId() + ", Name: " + student.getName());
//此处调用方法 做数据库添加操作
//此处调用方法 做数据库添加操作
//此处调用方法 做数据库添加操作
//此处调用方法 做数据库添加操作
}
上述代码仅供参考!