stream 流 集合 根据某个字段去重 + 提出多个字段生成新集合
List<WebCouponIdAndNameDTO> webCouponIdAndNameDTOList = new ArrayList<>();
if (CollectionUtil.isEmpty(couponDOByCodeList)) {
return webCouponIdAndNameDTOList;
}
//根据 code去重
webCouponIdAndNameDTOList = couponDOByCodeList.stream()
.collect(Collectors.collectingAndThen(
Collectors.toCollection(
() -> new TreeSet<>
(Comparator.comparing(CouponDO::getCpnCode))), ArrayList::new))
//取出三个字段 组成新集合
.stream().map(e -> new WebCouponIdAndNameDTO(e.getCpnName(), e.getCpnCode(), e.getCpnCode()))
.collect(Collectors.toList());