stream流累加多个字段值
时间: 2024-09-23 19:09:53 浏览: 41
Java8 stream 中利用 groupingBy 进行多字段分组求和案例
5星 · 资源好评率100%
在Java中,Stream API提供了一种高效的方式来处理集合数据,包括累加多个字段的值。当你需要对每个元素的多个属性求和、平均或其他操作时,可以使用`mapToDouble`、`mapToInt`等函数将每个元素转换成double或int类型的值,然后用`sum`、`average`等方法计算总和或平均。
例如,假设有一个Person对象列表,每个Person有age和salary两个数值字段,你可以这样做:
```java
List<Person> people = ...; // 假设Person类有age和salary属性
Optional<Double> totalSalaryAndAge = people.stream()
.mapToDouble(Person::getSalary)
.mapToDouble(p -> p + Person::getAge) // 对每个person的salary和age相加
.sum();
// 或者直接计算平均值
double averageSum = people.stream()
.mapToInt(Person::getSalary)
.mapToInt(p -> p + Person::getAge)
.average().orElse(Double.NaN); // 如果列表为空,返回NaN
```
这里我们使用了`mapToDouble`先将每个人的薪水和年龄转换为double,然后通过lambda表达式`p + Person::getAge`组合这两个值。最后,`sum()`或`average()`分别用于计算累加后的总数或平均值。
阅读全文