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
                        }
                    ]
                }
            ]
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章