java 有一个list<JKGL>对象,jkgl对象里面有provinceMunicipalityId,cityRegionId,countyId属性,怎么通过stream()进行数据分组
时间: 2024-11-13 18:19:56 浏览: 20
在Java中,你可以使用`List`的`stream()`方法配合`Collectors.groupingBy()`函数来进行数据分组,如果你想要按照`provinceMunicipalityId`、`cityRegionId`和`countyId`这三个属性进行分组,可以这样做:
```java
Map<String, List<JKGL>> groupedData = jkglList.stream()
.collect(Collectors.groupingBy(
JKGL::getProvinceMunicipalityId, // 使用provinceMunicipalityId作为键
Collectors.mapping(JKGL::getCityRegionId, // 按照cityRegionId收集到列表
Collectors.toList()) // 将每个值(cityRegionId)对应的JKGL对象放入一个新的列表中
));
```
这将返回一个`Map`,其中键是`provinceMunicipalityId`,值是一个由`cityRegionId`和它们对应的`JKGL`对象组成的列表。
如果你想获取每个`provinceMunicipalityId`下的所有城市及其相关的`countyId`信息,可以继续嵌套`groupingBy`:
```java
Map<String, Map<String, List<JKGL>>> multiLevelGroupedData = jkglList.stream()
.collect(Collectors.groupingBy(
JKGL::getProvinceMunicipalityId,
Collectors.groupingBy(
JKGL::getCityRegionId,
Collectors.mapping(JKGL::getCountyId, Collectors.toList())
)
));
```
现在,`multiLevelGroupedData`将包含省份、市和县三级的分组数据。
阅读全文