Lambda takes the intersection and difference of the list

Compare the two list data, one is the new list data, the other is the list data in the database. The
new list data in the database needs to be saved. If it exists, it needs to be modified. The list data in the database is in the new list data. Does not exist, delete

// 新获取的数据
List<Answer> answers = new ArrayList<>();
//数据库获取的数据
List<Answer> answersOld = new ArrayList<>();
// 新增的List 
List<Answer> Add = answers.stream()
        .filter(item -> !answersOld.stream()
                .map(e -> e.getAnswerCode())
                .collect(Collectors.toList())
                .contains(item.getAnswerCode()))
        .collect(Collectors.toList());

// 修改的List  
List<Answer> Update =  answers.stream()
        .filter(item -> answersOld.stream()
                .map(e -> e.getAnswerCode())
                .collect(Collectors.toList())
                .contains(item.getAnswerCode()))
        .collect(Collectors.toList());

// 删除的List 取数据库中存在的差集
List<Answer> Delete =  answersOld.stream()
        .filter(item -> !answers.stream()
                .map(e -> e.getAnswerCode())
                .collect(Collectors.toList())
                .contains(item.getAnswerCode()))
        .collect(Collectors.toList());

Guess you like

Origin blog.csdn.net/zhongzih/article/details/113120927