zoukankan      html  css  js  c++  java
  • MenuTreeUtil菜单树形递归工具类

    package com.aaa.util;
    
    
    import com.aaa.controller.vm.MenuVM;
    import com.aaa.entity.Menu;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 组装菜单树工具类
     * Created by cws
     * @author Administrator
     */
    public class MenuTreeUtil {
    
        public static MenuVM getTree(List<Menu> list) {
    
            //判断是否有获取到数据
            if (list == null || list.size() < 1) {
                return null;
            }
            return buildTree(getRoot(list), list);
        }
    
        private static MenuVM buildTree(MenuVM pnode, List<Menu> nodes) {
            List<MenuVM> childs = new ArrayList<>();
            for (Menu tmp : nodes) {
                if (pnode.getId().equals(tmp.getParentId())) {
                    childs.add(new MenuVM(tmp));
                }
            }
    
            //二次递归遍历子节点
            if (childs.size() > 0) {
                pnode.setSubMenu(childs);
                for (MenuVM ptmp : childs) {
                    buildTree(ptmp, nodes);
                }
            }
            return pnode;
        }
    
        /**
         * 获取一级目录
         *
         * @param list
         */
        private static MenuVM getRoot(List<Menu> list) {
            for (Menu po : list) {
                if ("#".equals(po.getParentId())) {
                    return new MenuVM(po);
                }
            }
            return null;
        }
    
    
        /**
         * @param list
         */
        public static List<MenuVM> getMenu(List<Menu> list) {
            //判断是否有获取到数据
            if (list == null || list.size() < 1) {
                return null;
            }
    
            return getTree(list) == null ? null : getTree(list).getSubMenu();
        }
    
    }`
    <</br>>
    ## 例如:
    ```/**
         * 根据用户id查找权限树菜单
         * @param userId
         * @return
         */
        @Override
        public List<MenuVM> getMenu(String userId) {
            List<Menu> menuList = baseMapper.selectMenuByUserId(userId);
            return MenuTreeUtil.getMenu(menuList);
        }`
  • 相关阅读:
    祥解使用 SQL Server 2005/2008 发送数据库邮件
    将Virtual Server 2005 的虚拟硬盘(VHD)文件复制到HyperV
    Win2008 64位 iis7 环境下安装Discuz!NT
    seo
    找了好办天才找到的asp生成图片学习一下
    1.1 开发背景 (学习图书连载csdn
    我眼中的C# 3.0
    google编程
    反射之反思
    我要减肥
  • 原文地址:https://www.cnblogs.com/cwshuo/p/13890726.html
Copyright © 2011-2022 走看看