实体表
public class BusinessCustomDomainResponse implements Serializable {
private String promotionPlatform;//平台 private BigDecimal balance;//余额 private Integer firstConsultCount;//咨询量
private Long relativeId;//关联id
}
根据指定属性分组
//根据平台分组
List<BusinessCustomDomainResponse> resultList = new ArrayList<>();
Map<String, List<BusinessCustomDomainResponse>> listMap = resultList.stream().collect(Collectors.groupingBy(po -> po.getPromotionPlatform()));
分组后根据指定属性聚合
//分组后根据指定属性生成集合
Map<String, List<Long>> listMap = resultList.stream().collect(Collectors.groupingBy(po -> po.getPromotionPlatform(), Collectors.mapping(po -> po.getRelativeId(), Collectors.toList())));
//分组后针对BigDecimal数据进行合计
Map<String, BigDecimal> decimalMap = resultList.stream().collect(Collectors.groupingBy(po -> po.getPromotionPlatform(), Collectors.mapping(po -> po.getBalance(), Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
//分组后针对基本数据类型进行合计
Map<String, Integer> integerMap = resultList.stream().collect(Collectors.groupingBy(po -> po.getPromotionPlatform(), Collectors.summingInt(po -> po.getFirstConsultCount())));
//分组后的计数
Map<String, Long> countMap = resultList.stream().collect(Collectors.groupingBy(po -> po.getPromotionPlatform(), Collectors.counting()));