Lambda表达式处理“全国三级地区数据”

1.省市地区数据结构

数据表结构

CREATE TABLE `sys_region` (
  `region_id` varchar(10) NOT NULL COMMENT '地区主键编号',
  `region_name` varchar(50) NOT NULL COMMENT '地区名称',
  `region_short_name` varchar(10) DEFAULT NULL COMMENT '地区缩写',
  `region_code` varchar(20) DEFAULT NULL COMMENT '行政地区编号',
  `region_parent_id` varchar(10) DEFAULT NULL COMMENT '地区父id',
  `region_level` int(2) DEFAULT NULL COMMENT '地区级别 1-省、自治区、直辖市 2-地级市、地区、自治州、盟 3-市辖区、县级市、县',
  PRIMARY KEY (`region_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='地区表';

数据下载地址:
此人来自火星

2.java8使用Lambda处理数据生成三级数据结构

public List<Region> findAllRegion(){
        //查询省市地区所有数据
        List<Region> regionList = dao.findAllRegion();
        //获得一级地区 省、自治区、直辖市
        List<Region> oneLevelRegion = regionList.stream().filter(item -> item.getRegionLevel() == 1).collect(Collectors.toList());
        //遍历一级地区
        oneLevelRegion.stream().forEach( oneItem ->
                {
                    //获得二级地区 地级市、地区、自治州、盟
                    List<Region> twoLevelRegion = regionList.stream().filter(twoItem ->
                            twoItem.getRegionLevel() == 2 && StringUtils.equals(twoItem.getRegionParentId(), oneItem.getRegionId()))
                            .collect(Collectors.toList());
                    //遍历二级地区
                    twoLevelRegion.stream().forEach( twoItem ->
                            {
                                //获得三级地区 市辖区、县级市、县
                                List<Region> threeLevelRegion = regionList.stream().filter(threeItem ->
                                        threeItem.getRegionLevel() == 3 && StringUtils.equals(threeItem.getRegionParentId(), twoItem.getRegionId()))
                                        .collect(Collectors.toList());
                                twoItem.setRegionList(threeLevelRegion);
                            });
                    oneItem.setRegionList(twoLevelRegion);
                }
        );
        return oneLevelRegion;
    }

返回数据结构

{
            "id": null,
            "createBy": null,
            "createDate": null,
            "updateBy": null,
            "updateDate": null,
            "pageNo": null,
            "pageSize": null,
            "regionId": "1000026",
            "regionName": "陕西省",
            "regionShortName": "陕、秦",
            "regionCode": "610000",
            "regionParentId": "-1",
            "regionLevel": 1,
            "regionList": [
                {
                    "id": null,
                    "createBy": null,
                    "createDate": null,
                    "updateBy": null,
                    "updateDate": null,
                    "pageNo": null,
                    "pageSize": null,
                    "regionId": "1002805",
                    "regionName": "西安市",
                    "regionShortName": null,
                    "regionCode": "610100",
                    "regionParentId": "1000026",
                    "regionLevel": 2,
                    "regionList": [
                        {
                            "id": null,
                            "createBy": null,
                            "createDate": null,
                            "updateBy": null,
                            "updateDate": null,
                            "pageNo": null,
                            "pageSize": null,
                            "regionId": "1002806",
                            "regionName": "未央区",
                            "regionShortName": null,
                            "regionCode": "610112",
                            "regionParentId": "1002805",
                            "regionLevel": 3,
                            "regionList": null
                        },
                        {
                            "id": null,
                            "createBy": null,
                            "createDate": null,
                            "updateBy": null,
                            "updateDate": null,
                            "pageNo": null,
                            "pageSize": null,
                            "regionId": "1002807",
                            "regionName": "新城区",
                            "regionShortName": null,
                            "regionCode": "610102",
                            "regionParentId": "1002805",
                            "regionLevel": 3,
                            "regionList": null
                        },
                        {
                            "id": null,
                            "createBy": null,
                            "createDate": null,
                            "updateBy": null,
                            "updateDate": null,
                            "pageNo": null,
                            "pageSize": null,
                            "regionId": "1002808",
                            "regionName": "碑林区",
                            "regionShortName": null,
                            "regionCode": "610103",
                            "regionParentId": "1002805",
                            "regionLevel": 3,
                            "regionList": null
                        },
                        {
                            "id": null,
                            "createBy": null,
                            "createDate": null,
                            "updateBy": null,
                            "updateDate": null,
                            "pageNo": null,
                            "pageSize": null,
                            "regionId": "1002809",
                            "regionName": "莲湖区",
                            "regionShortName": null,
                            "regionCode": "610104",
                            "regionParentId": "1002805",
                            "regionLevel": 3,
                            "regionList": null
                        },
                        {
                            "id": null,
                            "createBy": null,
                            "createDate": null,
                            "updateBy": null,
                            "updateDate": null,
                            "pageNo": null,
                            "pageSize": null,
                            "regionId": "1002810",
                            "regionName": "灞桥区",
                            "regionShortName": null,
                            "regionCode": "610111",
                            "regionParentId": "1002805",
                            "regionLevel": 3,
                            "regionList": null
                        },
                        {
                            "id": null,
                            "createBy": null,
                            "createDate": null,
                            "updateBy": null,
                            "updateDate": null,
                            "pageNo": null,
                            "pageSize": null,
                            "regionId": "1002811",
                            "regionName": "雁塔区",
                            "regionShortName": null,
                            "regionCode": "610113",
                            "regionParentId": "1002805",
                            "regionLevel": 3,
                            "regionList": null
                        },
                        {
                            "id": null,
                            "createBy": null,
                            "createDate": null,
                            "updateBy": null,
                            "updateDate": null,
                            "pageNo": null,
                            "pageSize": null,
                            "regionId": "1002812",
                            "regionName": "阎良区",
                            "regionShortName": null,
                            "regionCode": "610114",
                            "regionParentId": "1002805",
                            "regionLevel": 3,
                            "regionList": null
                        },
                        {
                            "id": null,
                            "createBy": null,
                            "createDate": null,
                            "updateBy": null,
                            "updateDate": null,
                            "pageNo": null,
                            "pageSize": null,
                            "regionId": "1002813",
                            "regionName": "临潼区",
                            "regionShortName": null,
                            "regionCode": "610115",
                            "regionParentId": "1002805",
                            "regionLevel": 3,
                            "regionList": null
                        },
                        {
                            "id": null,
                            "createBy": null,
                            "createDate": null,
                            "updateBy": null,
                            "updateDate": null,
                            "pageNo": null,
                            "pageSize": null,
                            "regionId": "1002814",
                            "regionName": "长安区",
                            "regionShortName": null,
                            "regionCode": "610116",
                            "regionParentId": "1002805",
                            "regionLevel": 3,
                            "regionList": null
                        },
                        {
                            "id": null,
                            "createBy": null,
                            "createDate": null,
                            "updateBy": null,
                            "updateDate": null,
                            "pageNo": null,
                            "pageSize": null,
                            "regionId": "1002815",
                            "regionName": "高陵区",
                            "regionShortName": null,
                            "regionCode": "610117",
                            "regionParentId": "1002805",
                            "regionLevel": 3,
                            "regionList": null
                        },
                        {
                            "id": null,
                            "createBy": null,
                            "createDate": null,
                            "updateBy": null,
                            "updateDate": null,
                            "pageNo": null,
                            "pageSize": null,
                            "regionId": "1002816",
                            "regionName": "鄠邑区",
                            "regionShortName": null,
                            "regionCode": "610118",
                            "regionParentId": "1002805",
                            "regionLevel": 3,
                            "regionList": null
                        },
                        {
                            "id": null,
                            "createBy": null,
                            "createDate": null,
                            "updateBy": null,
                            "updateDate": null,
                            "pageNo": null,
                            "pageSize": null,
                            "regionId": "1002817",
                            "regionName": "蓝田县",
                            "regionShortName": null,
                            "regionCode": "610122",
                            "regionParentId": "1002805",
                            "regionLevel": 3,
                            "regionList": null
                        },
                        {
                            "id": null,
                            "createBy": null,
                            "createDate": null,
                            "updateBy": null,
                            "updateDate": null,
                            "pageNo": null,
                            "pageSize": null,
                            "regionId": "1002818",
                            "regionName": "周至县",
                            "regionShortName": null,
                            "regionCode": "610124",
                            "regionParentId": "1002805",
                            "regionLevel": 3,
                            "regionList": null
                        }
                    ]
                }
            ]
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章