如何使用Java Stream API重写双层循环计算薪资总和
可以用Java Stream API实现该薪资总和计算
先给出完整的Stream实现代码:
public double getCostsOfEmployeesSalaries() { return accounting.getEmployeeCards().values() .stream() .flatMap(employeeCard -> employeeCard.getReports().values().stream()) .mapToDouble(Report::getSalary) .sum(); }
代码逻辑拆解:
- 第一步:从
accounting中取出所有EmployeeCard的集合,通过stream()转为Stream流 - 第二步:使用
flatMap将每个EmployeeCard对应的Report集合“平铺”成单个Report元素的流,避免出现嵌套的Stream结构 - 第三步:通过
mapToDouble将每个Report对象转换为对应的薪资数值,得到DoubleStream类型的流 - 第四步:调用
sum()方法直接计算所有薪资的总和,无需手动维护累加变量
这个实现和你原来的双层循环逻辑完全等价,而且代码更简洁,减少了手动操作集合和累加值的冗余代码。
内容的提问来源于stack exchange,提问作者domartynov
相关产品推荐
相关产品推荐

