中国各省市区县一览表java处理
发布时间
阅读量:
阅读量
前期准备
- 获取表格
链接: 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)
还没有任何评论哟~
