Java lambda BigDecimal list相加求和多种方式
时间: 2024-10-09 13:07:23 浏览: 33
Java lambda 循环累加求和代码
在Java中,可以使用BigDecimal列表并结合lambda表达式来计算它们的和。以下是几种不同的方法:
1. **Using forEach和Stream API**:
```java
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
List<BigDecimal> numbers = Arrays.asList(BigDecimal.ONE, BigDecimal.TEN, BigDecimal.valueOf(0.5));
BigDecimal sum = numbers.stream()
.map(BigDecimal::add)
.reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println("Sum: " + sum);
```
在这个例子中,我们先创建了一个BigDecimal列表,然后使用`stream()`将其转换为流,接着通过`map()`函数对每个元素应用加法操作,最后使用`reduce()`函数累加所有结果。
2. **使用传统for循环**:
```java
public BigDecimal sumByForLoop(List<BigDecimal> numbers) {
BigDecimal total = BigDecimal.ZERO;
for (BigDecimal num : numbers) {
total = total.add(num);
}
return total;
}
// 调用
BigDecimal sum = sumByForLoop(numbers);
```
这里遍历列表,逐个将数字添加到总和中。
3. **Lambda expression in a functional interface**:
如果有一个自定义的`Function`或者`UnaryOperator`接口,并实现了`summing`功能,你可以这样做:
```java
interface Summable {
BigDecimal apply(BigDecimal num);
}
Summable adder = (num) -> num.add(BigDecimal.ONE); // 或者直接写成 num -> num
BigDecimal sum = numbers.stream().map(adder).reduce(BigDecimal.ZERO, BigDecimal::add);
```
使用匿名内部类或者静态导入简化了表达式。
阅读全文