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("&lt;rf2:TotalCollection")        
        .append(" rf2:location=").append("\"").append(entry.getKey()).append("\"") 
        .append(" rf2:totalamount=").append("\"").append(sumAmt).append("\"").append("&gt;"); 
                           

    });     
    }); 

您的 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();