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
将BigDecimal
s 列表流压缩为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 次 |
最近记录: |