stream.foreach作BIGDECIMAL加法
时间: 2025-02-19 19:08:16 浏览: 35
### 使用 Java Stream API 对 `BigDecimal` 进行求和
对于 `BigDecimal` 类型的数据,在流处理中可以利用 `Stream` 的中间操作与终端操作来实现加法运算。下面展示了一个例子,其中创建了一组 `BigDecimal` 数字列表并使用 `reduce()` 方法对其进行累加。
```java
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<BigDecimal> bigDecimals = Arrays.asList(
new BigDecimal("10.5"),
new BigDecimal("20.3"),
new BigDecimal("30.7")
);
// 使用 reduce 来累积 BigDecimal 值
BigDecimal sum = bigDecimals.stream()
.reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println("Sum of BigDecimals: " + sum);
}
}
```
上述代码片段展示了如何通过调用 `stream()` 将列表转换成流对象,并应用 `reduce()` 函数来进行聚合计算[^2]。这里选择了 `BigDecimal.ZERO` 作为初始值以确保当输入为空时返回零而不是抛出异常。此外,采用静态导入的方式可以使代码更加简洁易读:
```java
// 静态导入以便更清晰地书写代码
import static java.math.BigDecimal.*;
...
.reduce(ZERO, add);
```
值得注意的是,虽然可以在 `forEach` 中执行类似的逻辑,但这不是最推荐的做法因为 `forEach` 是一个尽端操作而并非收集器的一部分。为了获得更好的性能以及可维护性的代码应当优先考虑像上面那样使用 `collect(Collectors.reducing())` 或者直接使用 `reduce()` 方法。
阅读全文
相关推荐

















