java - mapToDouble 在 Java 中不适用
问题描述
我有一个需要计算或汇总的金额列表。在总结之前,我将其转换为双倍。问题是我使用 stream.mapToDouble 时出错。它说“Stream<Service.Report> 类型中的方法 mapToDouble(ToDoubleFunction<? super Service.Report>) 不适用于参数 (double)”。
我不确定为什么它是错误的,我认为代码是正确的。
result.entrySet()
.forEach(entry -> {
String amthere = entry.getValue().get(5).tranamt; // list of amount
double Amt = Double.parseDouble(amthere);
double sumAmtF = entry.getValue().stream().mapToDouble(Amt).sum();
sb.append("<rf2:TotalCollection")
.append(" rf2:location=").append("\"").append(entry.getKey()).append("\"")
.append(" rf2:totalamount=").append("\"").append(sumAmt).append("\"").append(">");
});
});
解决方案
你entry.getValue()
似乎是一个列表Service.Report
。您必须选择tranamt
属性,并且在求和之前mapToDouble()
必须将每个属性解析为双精度。tranamt
double sumAmtF = entry.getValue()
.stream()
.map(report -> report.tranamt) // select tranamt attribute value
.mapToDouble(Double::parseDouble) // parse each tranamt attribute value into double
.sum();
推荐阅读
- ruby-on-rails - Rails DELETE 路由无法正常工作/未调用控制器功能
- java - 简单字符串的 Gson 转换失败并出现异常
- reactjs - React - Redux 调度程序未映射
- vim - VIM:如何过滤 COC.nvim 上的诊断信息?
- postgresql - Golang 结构的 Postgres 数组
- php - DateTimeZone 只处理一个方向的偏移量
- whatsapp - 如何使用 chat-api 向 whatsapp 组发送消息
- r - 什么是 RStudio 项目 (.Rproj)?
- javascript - 如何从多部分/表单数据中获取文本值
- java - Java编程用户定义类