vin*_*nit 2 java sum java-8 java-stream
计算MyDTO,Java 8中amountField的总和
private Double getSum(List<MyDTO> myDTOList) {
return myDTOList.stream().map(MyDTO::getAmount).reduce(0d, Double::sum);
}
Run Code Online (Sandbox Code Playgroud)
您可以使用Stream.mapToDouble
它将其转换为a DoubleStream
然后使用DoubleStream.sum
:
return myDTOList.stream().mapToDouble(MyDTO::getAmount).sum();
Run Code Online (Sandbox Code Playgroud)
更何况,上述应努力amount
成为的integer
类型为好,而代码由您共享,这将仍然正常工作,如果量的类型是已double
.
或者正如您在评论中指出的那样,如果您的DTO对象可以为null,则可以使用以下方法过滤掉这些值:
return myDTOList.stream().filter(Objects::nonNull).mapToDouble(MyDTO::getAmount).sum();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
95 次 |
最近记录: |