java实现使用java8新特性实现:集合有房间实体,每个实体有租金金额属性和场地费金额属性,将集合中每个实体的租金金额、场地费金额相加求和得出每个实体的总金额,再将计算出的每个实体的总金额相加求和,返回的总和也为bigdecimal类型
时间: 2024-11-12 10:45:17 浏览: 21
在Java 8中,你可以利用Stream API来方便地处理这种场景。首先,你需要创建一个Room实体类,包含`rentAmount`和`facilityFee`两个BigDecimal类型的字段。然后,可以按照以下步骤操作:
```java
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
class Room {
private BigDecimal rentAmount;
private BigDecimal facilityFee;
// 构造函数,getters 和 setters...
public BigDecimal getTotalAmount() {
return rentAmount.add(facilityFee);
}
}
List<Room> rooms = new ArrayList<>(); // 假设这里已经填充了Room实例
// 使用Stream API计算每个房间的总金额
List<BigDecimal> totalAmounts = rooms.stream()
.map(Room::getTotalAmount)
.collect(Collectors.toList());
// 求所有房间总金额之和
BigDecimal sumOfAllRooms = totalAmounts.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println("Sum of all room totals: " + sumOfAllRooms);
```
在这个例子中,我们先通过`map`方法将每个Room转换为其总金额,然后使用`collect`方法收集到一个新的列表`totalAmounts`。最后,通过`reduce`方法对这个列表求和,得到所有房间的总费用。
阅读全文