封装树形菜单数据

我们在实现权限管理的时候可能需要对菜单数据进行处理,使其返回树形菜单数据。
封装树形菜单数据_第1张图片


/**
 * 封装树形菜单数据
 */
public class MenuHelper {

    //递归实现封装过程
    public static List<SysMenu> buildTree(List<SysMenu> sysMenuList){
        //sysMenuList所有菜单的集合
        //创建list集合,用于封装最终的数据
        List<SysMenu> trees = new ArrayList<>();
        //遍历所有菜单集合
        for(SysMenu sysMenu : sysMenuList){
            //找到递归操作的入口
            //第一层菜单
            if(sysMenu.getParentId().longValue()==0){
                //根据第一层,找下层数据,使用递归完成
                //方法里面传递两个参数:第一个参数当前第一层菜单 第二个参数所有菜单集合
                trees.add(findChildren(sysMenu,sysMenuList));
            }
        }


        return trees;
    }


    /**
     * 递归查找下层数据
     * @param sysMenu
     * @param sysMenuList
     * @return
     */
    private static SysMenu findChildren(SysMenu sysMenu, List<SysMenu> sysMenuList) {
        //初始化
        sysMenu.setChildren(new ArrayList<>());
        //递归查询
        // sysMenu的id值与sysMenuList中的parentId相同
        for(SysMenu it : sysMenuList){
            //判断id和parentId相同
            if(sysMenu.getId().longValue()==it.getParentId().longValue()){
                sysMenu.getChildren().add(findChildren(it,sysMenuList));
            }
        }
        return sysMenu;
    }


}

你可能感兴趣的:(java)