java实现使用java8新特性实现:计算集合中的租金金额字段和场地费金额的求和,租金金额和场地费金额字段都为bigdecimal类型,返回的总和也为bigdecimal类型
时间: 2024-11-12 14:45:05 浏览: 10
Java8 stream 中利用 groupingBy 进行多字段分组求和案例
5星 · 资源好评率100%
在Java 8中,你可以利用Stream API来处理这样的需求。首先,假设你有一个包含BigDecimal类型的元素的List,每个元素都是一个Map,其中包含"rentalAmount"和"facilityFee"键对应的值。以下是如何计算总和:
```java
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
// 假设Element类有如下的结构
class Element {
private Map<String, BigDecimal> data;
// 构造函数、getter和setter...
}
public class Main {
public static void main(String[] args) {
List<Element> elements = new ArrayList<>(); // 填充你的列表
// 使用Java 8 Stream API计算总和
BigDecimal totalAmount = elements.stream()
.map(element -> element.getData().values().stream() // 提取所有的BigDecimal值
.reduce(BigDecimal.ZERO, BigDecimal::add)) // 使用reduce累加
.orElse(BigDecimal.ZERO); // 如果列表为空,返回0
System.out.println("Total rental and facility fees: " + totalAmount);
}
}
```
在这个例子中,`element.getData().values()`获取所有元素的值,然后`reduce()`方法对这些值进行累加。`orElse(BigDecimal.ZERO)`用于处理空列表的情况。
阅读全文