use*_*232 2 java bigdecimal java-stream
我坚持用一些优雅的方法BigDecimal在地图中得到s 的总和.我知道如何计算地图中的总和BigDecimal而不是带有的对象列表BigDecimal.
我的对象的结构如下:
Class Obj {
private BigDecimal b;
// Getter for b, say getB()
}
Map<String, List<Obj>> myMap;
Run Code Online (Sandbox Code Playgroud)
我需要得到所有b的总和myMap.在Java中寻找一些优雅的方法,可能会使用流?
Map.flatMap将BigDecimals 列表流压缩为s流BigDecimal.map提取BigDecimal秒.reduce带有求和运算.BigDecimal sum = myMap.values().stream()
.flatMap(List::stream)
.map(Obj::getB)
.reduce(BigDecimal.ZERO, (a, b) -> a.add(b) );
Run Code Online (Sandbox Code Playgroud)
该Stream.reduce方法采用标识值(对于求和值,为零),以及BinaryOperator将中间结果加在一起的a.
您也可以使用方法引用代替上面的lambda : BigDecimal::add.
| 归档时间: |
|
| 查看次数: |
693 次 |
| 最近记录: |