java实现使用java8新特性实现:集合有房间实体,每个实体有租金金额属性和场地费金额属性,将集合中每个实体的租金金额、场地费金额相加求总和,返回的总和也为bigdecimal类型
时间: 2024-11-12 07:46:16 浏览: 24
java8从list集合中取出某一属性的值的集合案例
5星 · 资源好评率100%
在Java 8中,你可以使用Stream API来处理这个需求。首先,你需要创建一个Room实体类,包含租金金额和场地费用两个BigDecimal类型的字段。然后,可以使用`stream()`方法获取集合的流(Stream),接着应用`mapToInt()`函数转换每个Room对象到其租金金额和场地费用的Int值(因为`mapToDouble`可能会丢失精度),最后使用`sum()`计算总和并将其转换回BigDecimal。
```java
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
class Room {
private BigDecimal rentAmount;
private BigDecimal facilityFee;
// 构造函数和getter/setter省略
public BigDecimal getTotalCost() {
return rentAmount.add(facilityFee);
}
}
List<Room> rooms = new ArrayList<>(); // 初始化你的Room对象列表
// 使用Java 8 Stream API
BigDecimal totalSum = rooms.stream()
.map(Room::getTotalCost) // 获取每个Room的总费用
.map(BigDecimal::doubleValue) // 转换为double类型以便求和
.mapToLong(Double::longValue) // 因为sum需要long类型
.sum() // 计算总和
.abs(); // 如果需要,转换结果为绝对值,假设总和不会为负
System.out.println("总费用: " + totalSum);
阅读全文