场景:根据list对象中的某几个属性(非空)去重,保留唯一值
思路:将属性组成唯一键,然后去重
示例:重复添加某个对象然后测试
import lombok.Data;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet;
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.toCollection;
/**
* description:
*/
@Data
public class Org {
private String id;
private String pid;
public static void main(String[] args) {
List<Org> importList = new ArrayList<>();
Org org = new Org();
org.setId("001");
org.setPid("002");
Org org1 = new Org();
org1.setId("002");
org1.setPid("003");
Org org2 = new Org();
org2.setId("003");
org2.setPid("001");
importList.add(org);
importList.add(org);
importList.add(org1);
importList.add(org2);
ArrayList<Org> collect = importList.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(dto -> dto.getId() + dto.getPid()))), ArrayList::new));
System.out.println(collect);
}
}