需求描述:把数据库中的省市二维表,查询到内存中后,转换为父子层级关系。通过jdk8中的stream方式实现。
数据关系:

320004 福建省 320507 南平市
430000 湖南省 430100 长沙市
320000 江苏省 320583 昆山市
430000 湖南省 430681 汩罗市
210000 辽宁省 210100 沈阳市
320000 江苏省 320500 苏州市区
430000 湖南省 430381 湘乡市
130000 河北省 130700 张家口市
代码实现:
父类,省的javabean
import lombok.Data;
import java.util.List;
@Data
public class ProvincesVo {
private String provinceCode;
private String provinceName;
private List<CitiesVo> cities;
}
子类,市的javabean
import lombok.Data;
@Data
public class CitiesVo {
private String cityCode;
private String cityName;
public CitiesVo(){}
public CitiesVo(String cityCode, String cityName) {
this.cityCode = cityCode;
this.cityName = cityName;
}
}
具体处理业务逻辑:
List<SearchCityCustomVo> list = projectMapperA.searchCity(map);
List<ProvincesVo> parentVoList = new ArrayList<>();
list.parallelStream().collect(Collectors.groupingBy(o -> o.getProvincecode(),Collectors.toList())).forEach(
(id,transfer) -> {
ProvincesVo provincesVo = new ProvincesVo();
List<CitiesVo> childVoList = transfer.stream().map(o -> {
provincesVo.setProvinceCode(o.getProvincecode());
provincesVo.setProvinceName(o.getProvincename());
return new CitiesVo(o.getCitycode(),o.getCityname());
}).collect(Collectors.toList());
provincesVo.setCities(childVoList);
parentVoList.add(provincesVo);
}
);
描述:在处理嵌套层测时候,觉得不太合适,希望各位小伙伴提出改进
本文介绍如何使用Java 8的Stream API将数据库查询出的省市数据转换为具有父子层级关系的数据结构。通过ProvincesVo和CitiesVo两个JavaBean类,配合Stream的groupingBy和map操作,实现了从二维表数据到树形结构的有效转换。
2491

被折叠的 条评论
为什么被折叠?



