mapToDouble 不适用于 Java
mapToDouble is not applicable in Java
我有一个需要计算或汇总的金额列表。在总结之前,我将它转换为 double。问题是我使用 stream.mapToDouble 时出错。它说 'The method mapToDouble(ToDoubleFunction<? super Service.Report>) in the type Stream<Service.Report> is not applicable for the arguments (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
的列表。您必须 select 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();
我有一个需要计算或汇总的金额列表。在总结之前,我将它转换为 double。问题是我使用 stream.mapToDouble 时出错。它说 'The method mapToDouble(ToDoubleFunction<? super Service.Report>) in the type Stream<Service.Report> is not applicable for the arguments (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
的列表。您必须 select 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();