Advertisement

中国各省市区县一览表java处理

阅读量:

前期准备

  1. 获取表格

链接: https://pan.baidu.com/s/1Jh8_NgdPDMPXKFQtEPcYmg 提取码: 6a4i

表格样式

在这里插入图片描述

2. 导入到数据库中

在这里插入图片描述

导入后就是这样

在这里插入图片描述

然后就可以利用java来操作数据了

二、组成父子结构

在这里插入图片描述

创建对应的javaBean类

复制代码
    @Data
    public 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 相当于每个province
        Map<Integer, List<Region>> provinces = all.stream().collect(Collectors.groupingBy(Region::getCodeProv));
    
        for (Map.Entry<Integer,List<Region>> province : provinces.entrySet()) {
            //获取每个省的cityList
            List<Region> singleProvince = province.getValue();
    
            //每个city的countryList
            Map<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的countryList
                List<Region> singleCity = city.getValue();
    
                //根据country的code区分的list 也就是每个country的townList
                Map<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类

复制代码
    @Data
    public 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;
    }
    
    @Override
    public 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;
    }
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释

返回的数据结果图

在这里插入图片描述

全部评论 (0)

还没有任何评论哟~