java代码优化使用高阶函数 public static MapString CalculationResultDTO statisticsOverallAppraisalfinal ListComputeResultExportDTO computeResultExports return CollectionUtilsemptyIfNullcomputeResultExpo
以下是使用高阶函数进行优化的代码:
public static Map<String, CalculationResultDTO> statisticsOverallAppraisal(final List<ComputeResultExportDTO> computeResultExports) {
return CollectionUtils.emptyIfNull(computeResultExports)
.stream()
.map(ExcelConvertUtil::overallAppraisalCompute)
.collect(Collectors.groupingBy(CalculationResultDTO::getScoreItemId,
LinkedHashMap::new,
Collectors.reducing(new CalculationResultDTO(),
(cal1, cal2) -> {
BigDecimal calculationResultValue = cal1.getCalculationResultValue();
return cal1.setCalculationResultValue(calculationResultValue.add(cal2.getCalculationResultValue()));
})));
}
这里使用了方法引用 ExcelConvertUtil::overallAppraisalCompute 来替代 lambda 表达式 (computeResultExport) -> ExcelConvertUtil.overallAppraisalCompute(computeResultExport)。此外,lambda 表达式中的参数类型可以根据上下文的推断省略。
另外,根据 Java 8 的类型推断,可以省略 CalculationResultDTO 的类型声明
原文地址: http://www.cveoy.top/t/topic/iYzh 著作权归作者所有。请勿转载和采集!