package test002;
public class User {
Long stuId;
String stuName;
Integer stuAge;
public Long getStuId() {
return stuId;
}
public void setStuId(Long stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public Integer getStuAge() {
return stuAge;
}
public void setStuAge(Integer stuAge) {
this.stuAge = stuAge;
}
public User() {
}
public User(Long stuId, String stuName, Integer stuAge) {
this.stuId = stuId;
this.stuName = stuName;
this.stuAge = stuAge;
}
@Override
public String toString() {
return "User{" +
"stuId=" + stuId +
", stuName='" + stuName + '\'' +
", stuAge=" + stuAge +
'}';
}
}
package test002;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Test {
public static void main(String[] args) {
List<User> newUsers = new ArrayList<>(4);
User user1 = new User(10L,"aaa",10);
User user2 = new User(11L,"bbb",10);
User user3 = new User(12L,"eee",10);
newUsers.add(user1);
newUsers.add(user2);
newUsers.add(user3);
List<User> oldUsers = new ArrayList<>(4);
User user4 = new User(13L,"aaa",10);
User user5 = new User(14L,"eee",10);
User user6 = new User(14L,"ccc",10);
oldUsers.add(user4);
oldUsers.add(user5);
oldUsers.add(user6);
List<User> insertMaterials = newUsers.stream()
.filter(a-> oldUsers.stream()
.map(User::getStuName)
.noneMatch(stuName-> Objects.equals(a.getStuName(),stuName)))
.collect(Collectors.toList());
System.out.println(insertMaterials);
List<User> updateMaterials = newUsers.stream()
.filter(a-> oldUsers.stream()
.map(User::getStuName)
.anyMatch(stuName-> Objects.equals(a.getStuName(),stuName)))
.collect(Collectors.toList());
System.out.println(updateMaterials);
List<User> deleteMaterials = oldUsers.stream()
.filter(a-> newUsers.stream()
.map(User::getStuName)
.noneMatch(stuName-> Objects.equals(a.getStuName(),stuName)))
.collect(Collectors.toList());
System.out.println(deleteMaterials);
}
}