以行政区划结构数据来举例
1.下面是我们最终想要的行政区划层级结构
{
"code": "370612",//区划码
"arealevel": "2",//区划等级(层级) 0省级,1市级,2区县级,3镇街级,4村级
"parentcode": "370600",//父级区划码
"name": "牟平区",//区划名称
"sort": 0
"childs"://子级区划
[
{
"code": "370612001",
"arealevel": "3",
"parentcode": "370612",
"name": "宁海街道",
"sort": 0
"childs":
[
{
"code": "370612001001",
"arealevel": "4",
"parentcode": "370612001",
"name": "永安里居委会"
"sort": 0
},
{
"code": "370612001002",
"arealevel": "4",
"parentcode": "370612001",
"name": "王家疃居委会"
"sort": 1
}
]
}
]
}
//所有区划数据
List<Area> list = areaService.listAll();
//按父级行政区划码分组
Map<String, List<Area>> mapList = list.stream().collect(Collectors.groupingBy(pd -> pd.getParentCode()));
//构建无限层级
for (Area p : list) {
//村级数据跳过,即最底级数据不处理
if (!"4".equals(p.getAreaLevel())){
p.setChilds(mapList.get(p.getCode()));
}
}
//筛选数据,筛取区县级数据(你想从哪级开始就取哪级)
List<Area> newList = list.stream().filter(s -> "2".equals(s.getAreaLevel())).sorted(Comparator.comparing(Area::getSort)).collect(Collectors.toList());
//完成
System.out.println(newList);