stream流分组后 求和转map
时间: 2024-11-10 19:26:47 浏览: 17
java8 stream自定义分组求和并排序的实现
在Java中,Stream API 提供了一种方便的方式来处理数据集合,并可以对数据进行分组、转换和聚合操作。当你想要按照某个键将数据分组并计算每个组的和,然后将结果存储到Map中,你可以这样做:
```java
import java.util.*;
import java.util.stream.Collectors;
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
// 使用Collectors.groupingBy和sum方法创建一个Map,键是数字除以3的余数,值是对应组内元素的和
Map<Integer, Long> sumMap = numbers.stream()
.collect(Collectors.groupingBy(
// 分组函数,这里取整数部分作为键
Math.floorMod(number, 3),
// 计算每个组的和
Collectors.reducing(0, Integer::sum)
));
System.out.println(sumMap);
```
上述代码首先将数字列表按其除以3的余数进行分组,然后对于每个组,通过`Collectors.reducing`收集器计算所有元素的和。运行后,你会得到一个`Map<Integer, Long>`,如`{0 -> 15, 1 -> 15, 2 -> 15}`。
阅读全文