List中对象根据id去重
一、需求
参考文章:https://blog.csdn.net/A_Gui_Code/article/details/106978867
对在list集合中对象根据主键id
去重,同时需要对重复对象的某个字段
进行单独处理。
例如,对象包含字段如下, 当某个对象重复时,需要重新修改此对象的association值:
private Long id;
private String uuid;
private String name;
private String association;
二、解决
java
/**
* supplierVOs对象列表合并去重
* @param supplierVOs 需要去重的对象集合
* @return 返回处理完毕的对象集合
*/
private List<SupplierVO> mergeSupplierVOs(List<SupplierVO> supplierVOs){
return new ArrayList<>(supplierVOs.stream()
// 表示id为key, 接着如果有重复的,那么从SupplierVO对象o1与o2中筛选出一个,这里选择o1,
.collect(Collectors.toMap(SupplierVO::getId, a -> a, (o1, o2) -> {
// 把id重复,需要将association字段值与o1进行拼接的o2, 赋值给o1,最后返回o1
o1.setAssociation(o2.getAssociation() + o1.getAssociation());
return o1;
})).values());
}