一剑荒芜 2021-05-26 13:46 采纳率: 66.7%
浏览 116
已结题

java 省市区递归

    public static void main(String[] args) {
       List<City> cityList = new ArrayList<>();
       cityList.add(new City(1, 0, "北京", "北京"));
       cityList.add(new City(2, 0, "内蒙", "内蒙"));
       cityList.add(new City(3, 0, "河北", "河北"));
 
       cityList.add(new City(11, 1, "东城", "北京东城"));
       cityList.add(new City(12, 2, "呼市", "内蒙新呼市"));
       cityList.add(new City(13, 3, "唐山", "河北唐山"));
       cityList.add(new City(14, 1, "西城", "北京西城"));
 
       cityList.add(new City(21, 11, "南锣鼓巷", "北京东城南锣鼓巷"));
       cityList.add(new City(22, 12, "新城区", "内蒙新呼市新城区"));
       cityList.add(new City(23, 13, "哈哈区", "河北唐山哈哈区"));
       cityList.add(new City(24, 11, "南洛惜香", "北京东城南洛惜香"));
       cityList.add(new City(25, 14, "西城广场", "北京西城西城广场"));
 
 
 
        List<HashMap<String, String>> list = new ArrayList<>();
 
        Map<String, Object> listSz = new HashMap<>();
        Map<String, Object> map = getCitys(listSz, cityList, cityList, 0);
        System.out.println(JSON.toJSONString(map));
 
        
 
 
    }
    
//    System.out.println(getList(map));
//    List<Map<String, Object>> l = new ArrayList<>();
//    String str = "";
//        System.out.println("-----------");
//        System.out.println(getCity(l, cityList, cityList, 0));
 
    /**
     *  省市区递归
     * @param listSz 存放
     * @param cityList 省市区集合
     * @param cityOldList 省市区集合
     * @param status
     * @return
     */
    public static Map<String, Object> getCitys(Map<String, Object> listSz, List<City> cityList, List<City> cityOldList, int status) {
        for (City city : cityList) {
            if (city.getParentId() == 0 || status == 1){
                Map<String, Object> listSzx = new LinkedHashMap<>();
                cityList = cityOldList.parallelStream().filter(f -> f.getParentId() == city.getId()).collect(Collectors.toList());
                String mapKey = city.getCityAllName();
                listSzx.put("description", city);
                if (!cityList.isEmpty()){
                    getCitys(listSzx, cityList, cityOldList, 1);
                    listSz.put(mapKey, listSzx);
                }else{
                    listSz.put(mapKey, listSzx);
                }
            }
        }
        return listSz;
    }

实现以下效果

{
            "pName" : "河北", 
            "id" : 3,
            "parentId":0,
            "childen":{
                    "cName" : "唐山",
                    "id" : 13,
                    "parentId":3,
                    "childen":{
                        "qName" : "哈哈区",
                        "id" : 3,
                        "parentId":13
                    }
            }
        },
@Data
class City{

    private int id, parentId;
    private String cityName, cityAllName;

    public City(int id, int parentId, String cityAllName, String cityName){
        this.id = id;
        this.parentId = parentId;
        this.cityAllName = cityAllName;
        this.cityName = cityName;
    }


}

以上代码赋值run即可查看已有效果(代码任意修改,能实现效果即可)

  • 写回答

4条回答 默认 最新

  • CSDN专家-微编程 2021-05-26 14:05
    关注

    你这问题描述的不清楚呀,你到底想要什么样的呢?City是类不用实现吧

    评论

报告相同问题?

悬赏问题

  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思