DrawRewardServiceImpl.java
//语法上:
Map<Long, ActivityOrderEntity> orderMaps = orders.stream()
.collect(Collectors.groupingBy(ActivityOrderEntity::getUserId,
Collectors.collectingAndThen(
Collectors.reducing((c1, c2) -> c1.getRoundNum() > c2.getRoundNum() ? c1 : c2), Optional::get)
));
//推荐以下:
Map<Long, ActivityOrderEntity> orderMaps = orders.stream()
.collect(Collectors.toMap(ActivityOrderEntity::getUserId,
Function.identity(), (c1, c2) -> c1.getRoundNum() > c2.getRoundNum() ? c1 : c2));
// 分组求和
fundTradeFlowList.stream()
.filter(r -> FundBizCodeEnum.BUY.getCode().equals(r.getBizCode()))
.collect(Collectors.groupingBy(FundTradeFlowBO::getFundCode,
Collectors.reducing(BigDecimal.ZERO, FundTradeFlowBO::getAmount, this::sumBigDecimal)));
private BigDecimal sumBigDecimal(BigDecimal assetA, BigDecimal assetB) {
if (assetA == null && assetB == null) {
return BigDecimal.ZERO;
}
if (assetA == null) {
return assetB;
}
if (assetB == null) {
return assetA;
}
return assetA.add(assetB);
}