java父子表_数据库二维表转父子关系,java,stream,list

该博客讨论了如何使用Java 8的Stream API将数据库中的省市二维表转换为父子层级关系。作者提供了父类ProvincesVo和子类CitiesVo的JavaBean实现,并展示了如何通过Stream进行数据分组和转换,构建省市区的层级结构。在处理大量数据时,作者认为现有方法可能不够高效,期待社区提供改进建议。
摘要由CSDN通过智能技术生成

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

数据关系:

0fe59edf269b3da5a70d240257997044.png

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 Listcities;

}

子类,市的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;

}

}

具体处理业务逻辑:

Listlist = projectMapperA.searchCity(map);

ListparentVoList = new ArrayList<>();

list.parallelStream().collect(Collectors.groupingBy(o -> o.getProvincecode(),Collectors.toList())).forEach(

(id,transfer) -> {

ProvincesVo provincesVo = new ProvincesVo();

ListchildVoList = 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);

}

);

描述:在处理嵌套层测时候,觉得不太合适,希望各位小伙伴提出改进

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值