zoukankan      html  css  js  c++  java
  • 简洁常用权限系统的设计与实现(五):不维护节点的深度level,手动计算level,构造树

     这种方式,与第三篇中介绍的类似。
    不同的是,数据库中不存储节点的深度level,增加和修改时,也不用维护。
    而是,在程序中,实时去计算的。

    至于后面的,按照level升序排序,再迭代所有的节点构造树,与第三篇中的方法,完全一样。
    因此,本篇和下一篇,只介绍如何计算level,不再介绍后面的具体实现了。 


    计算level,采用递归方式。

     
    // 计算所有节点的level
    	public static List<Map<String, Object>> caculateLevel(
    			List<Map<String, Object>> list) {
    		//从所有节点中,找出所有的顶级节点
    		List<Map<String, Object>> topLevelList = TreeMenuUtil.findTopLevelNodeList(list);
    		//遍历顶级节点
    		for (Map<String, Object> top : topLevelList) {
    			//顶级节点的level为1
    			level = 1;
    			top.put("level", level);
    			//为每一个顶级节点,构造子结点树
    			child(list, top);
    		}
    		return list;
    	}
    
    	//为当前节点,构造子结点,再构造子结点的子结点
    	private static void child(List<Map<String, Object>> list,
    			Map<String, Object> parent) {
    		//找出一个节点的所有一级子结点
    		List<Map<String, Object>> childList = TreeMenuUtil.findAllChild(parent, list);
    		//遍历子结点
    		for (Map<String, Object> child : childList) {
    			//深度+1
    			level++;
    			child.put("level", level);
    			child(list, child);
    			//回退,深度-1
    			level--;
    		}
    	}
    原文首发:http://fansunion.cn/article/detail/573.html
  • 相关阅读:
    Springboot演示小Demo
    快速构建一个 Springboot
    javase练习题--每天写写
    javase练习题
    WebDriver API——延时操作及元素等待
    WebDriver API——javascript的相关操作
    Jenkins安装部署及tomcat的入门介绍
    WebDriver API——鼠标及键盘操作Actions
    sql查询练习
    睡前反省,絮叨絮叨
  • 原文地址:https://www.cnblogs.com/qitian1/p/6463014.html
Copyright © 2011-2022 走看看