java - 如何在 Java 中使用收集器聚合多个字段
问题描述
我有一个自定义的 Object Itemized,它有两个字段 amount 和 tax。我有一个 Itemized 对象数组,我希望将同一流中的两个字段相加。下面是我如何计算两个字段的总和。
double totalAmount = Arrays.stream(getCharges()).map(Itemized::getAmount).reduce(0.0, Double::sum));
double totalTax = Arrays.stream(getCharges()).map(Itemized::getTax).reduce(0.0, Double::sum));
有什么方法我不必解析两次流并且可以一次将两个字段相加?我不希望将 totalTax 和 totalAmount 相加,而是要分别计算它们的总和。我正在查看 Collectors,但找不到任何允许一次性聚合多个字段的示例。
解决方案
使用 for 循环?
double taxSum = 0;
double amountSum = 0;
for (Itemized itemized : getCharges()) {
taxSum += itemized.getTax();
amountSum += itemized.getAmount();
}
推荐阅读
- python - 如何使用 PyQt5 设置 PyOpenGL?
- angular - Microsoft.AspNetCore.SpaServices:错误:给定的 rootPath 中的错误未定义不是程序的文件
- php - 在 PHP 上存储来自 CLI 命令输出的值 (Windows)
- reactjs - 在 NextJS 中实现本地喜欢/不喜欢的功能并使其在客户端路由之间保持不变
- c++ - 函数标题中的 Qt/Qt Creator 和箭头运算符 (->) - 是否有效?
- spring-boot - Apache Camel CXF 设置传输属性
- amazon-web-services - 使用 Visual Studio IDE 部署 sam 时出现 Python UTF-8 错误
- kubernetes - kubernetes 批量重启所有命名空间 pod 以使新的配置映射配置工作
- angular - Javascript 可以代替 TypeScript 用于 Angular 开发吗?
- php - 使用 laravel 命令生成多个文件