前期准备
获取表格链接: /s/1Jh8_NgdPDMPXKFQtEPcYmg 提取码: 6a4i
表格样式
2. 导入到数据库中
导入后就是这样
然后就可以利用java来操作数据了
二、组成父子结构
创建对应的javaBean类
@Datapublic class Region {private String nameProv;private Integer codeProv;private String nameCity;private Integer codeCity;private String nameCoun;private Integer codeCoun;private String nameTown;private Integer codeTown;}
public Map<Integer, Map<Integer, Map<Integer, List<Region>>>> getAll() {//每个province的map都放进去Map<Integer, Map<Integer, Map<Integer, List<Region>>>> provinceMap = new HashMap<>();//获取所有的数据List<Region> all = regionMapper.getAll();//根据pro_code分好的List 相当于每个provinceMap<Integer, List<Region>> provinces = all.stream().collect(Collectors.groupingBy(Region::getCodeProv));for (Map.Entry<Integer,List<Region>> province : provinces.entrySet()) {//获取每个省的cityListList<Region> singleProvince = province.getValue();//每个city的countryListMap<Integer, List<Region>> cities = singleProvince.stream().collect(Collectors.groupingBy(Region::getCodeCity));//每个city的map都放进去Map<Integer, Map<Integer, List<Region>>> cityMap = new HashMap<>();for (Map.Entry<Integer,List<Region>> city : cities.entrySet()) {//每个city的countryListList<Region> singleCity = city.getValue();//根据country的code区分的list 也就是每个country的townListMap<Integer, List<Region>> countrys = singleCity.stream().collect(Collectors.groupingBy(Region::getCodeCoun));cityMap.put(city.getKey(), countrys);}provinceMap.put(province.getKey(), cityMap);}return provinceMap;}
返回的数据结构
三、优化二
因为list里的数据重复性太大,可以直接用街道的String代替
四、指针指向父亲
创建新的javaBean类
@Datapublic class RegionVo {private String name;private Integer code;//private RegionVo parent;private Integer parentCode;public RegionVo() {}public RegionVo(String name) {this.name = name;}public RegionVo(String name, Integer code) {this.name = name;this.code = code;}@Overridepublic String toString() {return "RegionVo{" +"name='" + name + '\'' +", code=" + code +'}';}}
还用到了上面的第二个方法
public List<RegionVo> getAll3() {int code = 10001;Map<String, Map<String, Set<String>>> provinceMap = getAll2();List<RegionVo> list = new ArrayList<>();for (Map.Entry<String, Map<String, Set<String>>> province : provinceMap.entrySet()) {String provinceName = province.getKey();Map<String, Set<String>> cityMap = province.getValue();RegionVo provinceVo = new RegionVo(provinceName);provinceVo.setParentCode(0);provinceVo.setCode(code++);list.add(provinceVo);for (Map.Entry<String, Set<String>> city : cityMap.entrySet()) {String cityName = city.getKey();Set<String> countrySet = city.getValue();RegionVo cityVo = new RegionVo(cityName);cityVo.setParentCode(provinceVo.getCode());cityVo.setCode(code++);//cityVo.setParent(provinceVo);list.add(cityVo);for (String countryName : countrySet) {RegionVo countryVo = new RegionVo(countryName);countryVo.setParentCode(cityVo.getCode());countryVo.setCode(code++);//countryVo.setParent(cityVo);list.add(countryVo);}}}return list;}
返回的数据结果图
如果觉得《中国各省市区县一览表java处理》对你有帮助,请点赞、收藏,并留下你的观点哦!