java 针对 List<Map> 统计 多 字段 group by
时间: 2024-10-17 11:05:47 浏览: 49
在Java中,如果你有一个List<Map<String, Object>>,其中每个Map代表一条记录,并且你想按照多个字段(比如字段A、B、C)来进行分组统计,你可以使用Java 8引入的Stream API以及Collectors类来实现这个功能。以下是一个简单的示例:
```java
import java.util.*;
import java.util.stream.Collectors;
List<Map<String, Object>> records = ... // 假设这是你的数据列表
// 定义你想要group by的字段名
String[] fieldNames = {"fieldA", "fieldB", "fieldC"};
// 使用Collectors.groupingBy方法,键是所有字段组成的新的Map,值是对应的记录列表
Map<MultiValueMap<String, Object>, List<Map<String, Object>>> groupedRecords =
records.stream()
.collect(Collectors.groupingBy(
record -> Arrays.stream(fieldNames)
.map(record::get) // 获取每个字段的值
.collect(Collectors.toMap(Function.identity(), Function.identity())) // 将字段值作为键
));
// 现在groupedRecords中,每一个键都是一个包含多个字段值的复合键,对应值是一个记录列表
```
这里我们创建了一个`MultiValueMap`作为键,它可以存储多个键值对,每个键可以有多个值。这样就可以处理多字段的group by需求。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)