使用背景:有两个List集合,一个从数据库取的数据,一个从前端修改的数据,需要拿出他们某个字段相同的部分和不相同的部分拿出来,一个修改的数据的集合,一个删除原来的数据集合,一个新增的数据的集合,产生3个新的list来做不同的操作。
//从数据库取的数据
List<SaleTaskItem> saleTaskItemOldList = new ArrayList<>();
//从前端修改的数据
List<SaleTaskItem> saleTaskItemNewList = new ArrayList<>();
//修改的
List<SaleTaskItem> updateOldList = saleTaskItemNewList.stream()
.filter(item -> saleTaskItemOldList.stream()
.map(e -> e.getId())
.collect(Collectors.toList())
.contains(item.getId()))
.collect(Collectors.toList());
//删除的
List<SaleTaskItem> deleteOldList = saleTaskItemOldList.stream()
.filter(item -> !saleTaskItemNewList.stream()
.map(e -> e.getId())
.collect(Collectors.toList())
.contains(item.getId()))
.collect(Collectors.toList());
//新的
List<SaleTaskItem> newList = saleTaskItemNewList.stream()
.filter(item -> !saleTaskItemOldList.stream()
.map(e -> e.getId())
.collect(Collectors.toList())
.contains(item.getId()))
.collect(Collectors.toList());