zoukankan      html  css  js  c++  java
  • java递归树形菜单

    本次读取数据只是依照我项目逻辑
    1、先获取所有菜单
    List list=baseMenuService.getPowerTree(ParentMenuId);
    2、在从菜单中得到所有一级菜单
    List rootMenu=new ArrayList<>();
    for (int i=0;i<list.size();i++){
    if (list.get(i).getParentmenuid()==0){
    rootMenu.add(dealMenuItem(list.get(i)));

            }
        }
    

    3、循环一级菜单,对每个一级菜单进行递归
    for (BaseMenu menu:rootMenu){
    menu.setChildren(getChild(menu.getId(),list));
    }
    4、递归方法
    /**
    * 递归菜单
    */
    private List getChild(Integer id,List allList){
    //子菜单
    List childList=new ArrayList<>();
    for (BaseMenu menu:allList){
    if (menu.getParentmenuid().equals(id)){
    childList.add(dealMenuItem(menu));
    }
    }

        //把子菜单的子菜单在循环一遍
        for (BaseMenu menu:childList){
            menu.setChildren(getChild(menu.getId(),allList));
        }
        //递归退出条件
        if (childList.size()==0){
            return null;
        }
        return childList;
    }
    
    private BaseMenu dealMenuItem(BaseMenu menu){
        JSONArray jsonArray=JSONArray.parseArray(menu.getMenupower());
        List<BasePower> powers=new ArrayList<>();
    
        if (jsonArray.isEmpty()){
            jsonArray=JSONArray.parseArray("[{"PowerId":7,"PowerName":"查看"}]");
        }
    
        for (int i=0;i<jsonArray.size();i++){
    
            JSONObject object=jsonArray.getJSONObject(i);
            BasePower basePower=new BasePower();
            basePower.setPowerid(object.getInteger("PowerId"));
            basePower.setPowername(object.getString("PowerName"));
            powers.add(basePower);
            menu.setPower(powers);
        }
        return  menu;
    }
  • 相关阅读:
    [网络流24题] 最小路径覆盖问题
    [P2664] 树上游戏
    [ZROI #316] ZYB玩字符串
    [Codeforces #172] Tutorial
    [网络流24题]方格取数
    Python 全栈开发:python函数进阶
    Python 全栈开发:python函数基础
    Python 全栈开发:python文件处理
    Python 全栈开发:python字符编码
    Python 全栈开发:python字典dict
  • 原文地址:https://www.cnblogs.com/frank2828/p/15402138.html
Copyright © 2011-2022 走看看