需求描述:把数据库中的省市二维表,查询到内存中后,转换为父子层级关系。通过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 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);
}
);
描述:在处理嵌套层测时候,觉得不太合适,希望各位小伙伴提出改进