java中lambda⽅式groupby分组统计数据
做的物资管理系统涉及到很多数据的分组统计,之前都是直接在数据库⾥⾯查询的,直到看到⼤佬写的代码,⾃愧不如。下⾯就上⼀段代码,也算是做个笔记吧。
private Map<String,Double>getPickingAmountMap(final List<Long> taskIds){
final List<PmsPickLineEntity> pmsPickLineEntities = PickingAmount(taskIds);
final Map<String, List<PmsPickLineEntity>> map = pmsPickLineEntities.stream().upingBy(o -> o.getProjectCode()+"_"+ o.getTa skCode()+"_"+ o.getDesignName()+"_"+ o.getDesignSpecifications()+"_"+ o.getMeasurementUnit()));
final Map<String,Double> pickingAmountMap =new HashMap<>();
map.forEach((key, value)->{
if(null!=value &&!value.isEmpty()){
pickingAmountMap.put(key,value.stream().filter(p ->null!= p.getPickingAmount()).
map(pmsPickLineEntity -> BigDecimal.PickingAmount())).reduce(BigDecimal::add).orElse(BigDecimal.Z ERO).doubleValue());
}
});
return pickingAmountMap;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论