gpt4 book ai didi

java - 在 Java 中的对象列表映射中总结 BigDecimal

转载 作者:行者123 更新时间:2023-12-02 12:19:26 25 4
gpt4 key购买 nike

我一直在使用一些优雅的方法来获取 map 中 BigDecimal 的总和。我知道如何计算 BigDecimal 映射中的总和,但不知道如何计算具有 BigDecimal 的对象列表。

我的对象的结构如下:

Class Obj {
private BigDecimal b;
// Getter for b, say getB()
}

Map<String, List<Obj>> myMap;

我需要获取 myMap 中所有 b 的总和。在 Java 中寻找一些优雅的方法来做到这一点,可能会使用流?

最佳答案

  1. 流式传输 map 的值。
  2. 使用flatMapBigDecimal 列表流展平为 BigDecimal 流。
  3. 使用 map 提取 BigDecimal
  4. reduce 与求和运算结合使用。
BigDecimal sum = myMap.values().stream()
.flatMap(List::stream)
.map(Obj::getB)
.reduce(BigDecimal.ZERO, (a, b) -> a.add(b) );

Stream.reduce method采用一个标识值(对于求和值,零)和一个将中间结果加在一起的 BinaryOperator

您还可以使用方法引用来代替上面的 lambda:BigDecimal::add

关于java - 在 Java 中的对象列表映射中总结 BigDecimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49931366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com