`

关于树形数据

 
阅读更多

树形数据后台组建

	/**
	 * 重新组建menu导航
	 * @param menuList
	 * @param menus
	 * @param pid
         * @author hous
	 */
	public List<MenuCustom> getMenuTreeLists(List<MenuCustom> menus, Integer pid) throws CustomException{
		List<MenuCustom> children = null;
		List<MenuCustom> menuList = new ArrayList<MenuCustom>();
		for (MenuCustom menu : menus) {
			if(menu.getPid() == pid){
				children = new ArrayList<MenuCustom>();
				children = getMenuTreeLists(menus, menu.getId());
				menu.setChildren(children);
				menuList.add(menu);
			}
		}
		return menuList;
	}

 前台页面显示

    <!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
    <div class="collapse navbar-collapse navbar-ex1-collapse">
        <ul class="nav navbar-nav side-nav">
            <li>
                <a href="${pageContext.request.contextPath}/index"><i class="fa fa-fw fa-dashboard"></i> Dashboard</a>
            </li>
            <c:forEach items="${userInfo.menuList}" var="menu" varStatus="s">
            	<c:if test="${!(menu.children eq null)}">
            		<li>
		                <a href="javascript:;" data-toggle="collapse" data-target="#menu${s.index}"><i class="fa fa-fw fa-arrows-v"></i> ${menu.name} <i class="fa fa-fw fa-caret-down"></i></a>
		                <ul id="menu${s.index}" class="collapse">
		                	<c:forEach items="${menu.children}" var="v">
		                    <li>
		                        <a href="${pageContext.request.contextPath}/${v.url}">${v.name}</a>
		                    </li>
		                    </c:forEach>
		                </ul>
		            </li>
            	</c:if>
            	<c:if test="${menu.children eq null}">
	            	<li>
	                	<a href="${pageContext.request.contextPath}/${menu.url}"><i class="fa fa-fw fa-dashboard"></i> ${menu.name}</a>
	            	</li>
            	</c:if>
            </c:forEach>
        </ul>
    </div>
    <!-- /.navbar-collapse -->

 另一种方式树形数据展示

package com.hous;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import com.alibaba.fastjson.JSON;

public class TreeUtils {
    public static void main(String[] args) {
        List<Node> list = new ArrayList<Node>();
        Node n0 = new Node("430000", "430000", "430000", "江苏省", 1);
        
        Node n1 = new Node("430000", "430500", "430500", "南京市", 5);
        Node n2 = new Node("430500", "430521", "430521", "江宁区", 28);
        Node n3 = new Node("430500", "430527", "430527", "玄武区", 27);
        
        Node n4 = new Node("430000", "430100", "430100", "无锡市", 1);
        Node n5 = new Node("430100", "430102", "430102", "江南区", 10);
        list.add(n0);
        list.add(n1);
        list.add(n2);
        list.add(n3);
        list.add(n4);
        list.add(n5);

        Node root = null;
        Map<String, Node> nodeMap = new HashMap<String, Node>();
        for (Node node : list) {
            nodeMap.put(node.getRegId(), node);
        }
        for (Entry<String, Node> entry : nodeMap.entrySet()) {
            Node temp = entry.getValue();
            if (temp.getRegId() == "430000") {
                root = temp;
            } else {
                nodeMap.get(temp.getpRegId()).getChild().add(temp);
            }
        }
        // root.sortChildren();
        System.out.println(JSON.toJSONString(root.getChild()));

    }
}


class Node {
    private List<Node> child = new ArrayList<Node>();
    private String pRegId;
    private String regCode;
    private String regId;
    private String regName;
    private int regOrder;

    public Node(String pRegId, String regCode, String regId, String regName, int regOrder) {
        super();
        this.pRegId = pRegId;
        this.regCode = regCode;
        this.regId = regId;
        this.regName = regName;
        this.regOrder = regOrder;
    }

    public List<Node> getChild() {
        return child;
    }

    public void setChild(List<Node> child) {
        this.child = child;
    }

    public String getpRegId() {
        return pRegId;
    }

    public void setpRegId(String pRegId) {
        this.pRegId = pRegId;
    }

    public String getRegCode() {
        return regCode;
    }

    public void setRegCode(String regCode) {
        this.regCode = regCode;
    }

    public String getRegId() {
        return regId;
    }

    public void setRegId(String regId) {
        this.regId = regId;
    }

    public String getRegName() {
        return regName;
    }

    public void setRegName(String regName) {
        this.regName = regName;
    }

    public int getRegOrder() {
        return regOrder;
    }

    public void setRegOrder(int regOrder) {
        this.regOrder = regOrder;
    }

    // 孩子节点排序
    @SuppressWarnings("unchecked")
    public void sortChildren() {
        // 对本层节点进行排序
        // 可根据不同的排序属性,传入不同的比较器,这里传入ID比较器
        Collections.sort(child, new NodeIDComparator());
        // 对每个节点的下一层节点进行排序
        for (Iterator<Node> it = child.iterator(); it.hasNext();) {
            ((Node) it.next()).sortChildren();
        }
    }
}


class NodeIDComparator implements Comparator {
    // 按照节点编号比较
    public int compare(Object o1, Object o2) {
        int j1 = ((Node) o1).getRegOrder();
        int j2 = ((Node) o2).getRegOrder();
        return (j1 < j2 ? -1 : (j1 == j2 ? 0 : 1));
    }
}

 

 

分享到:
评论

相关推荐

    js 树形结构数据遍历条件判断删除对应数据.pdf

    `filterTreeData` 函数就是针对这种数据结构设计的一个方法,用于遍历树形数据并根据指定条件删除对应的数据节点。 首先,我们分析给出的函数代码: ```javascript filterTreeData(data, ids) { let newData = ...

    js实现树形结构,功能非常强大,而调用又非常简单

    `树形`标签则表明这是一个关于树形数据结构的知识点。由于提供的压缩包文件名仅列出"JS实现树形结构",具体实现细节和代码示例需要解压文件查看。解压后,你将找到源代码、文档和示例,这些将有助于深入理解和应用...

    Excel树形结构数据导入Oracle数据库(Java)

    2. **数据解析**:对于树形结构数据,需要逐级解析,可能涉及到递归方法,将每一层的数据转换成Java对象。这些对象可能包含父节点、子节点以及相关属性。 3. **数据映射**:将Excel中的列名与Oracle数据库表的字段...

    mysql 树形结构查询

    这种查询方式可以高效地查询树形结构的数据,并且可以根据需要设置递归深度。 MySQL 中的树形结构查询可以使用存储过程来实现,存储过程是一种复杂的查询逻辑,可以将复杂的查询逻辑封装在存储过程中,以提高查询...

    sql树形数据处理示例

    在SQL数据库中,树形数据结构是一种常见的关系表示方式,特别是在需要表示层级或者分类的数据时。例如,组织架构、产品目录、菜单系统等都可能涉及树形数据的存储和查询。本示例将深入探讨如何在SQL中处理这类数据,...

    Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)

    数据结构为数组中包含对象–树形结构,用Vue组件的写法实现以下的效果: 树形列表,缩进显示层级,第5级数据加底色,数据样式显色,点击展开折叠数据。本文为用Vue实现方式,另有一篇为用knockout.js的实现方法。 ...

    树形控件拖曳放置及移动_labview_labview树形控件_树形控件(tree)

    在LabVIEW编程环境中,树形控件(Tree Control)是一种常用的数据展示和交互工具,它以层次结构的方式显示数据,用户可以通过展开、折叠节点来查看和操作数据。本教程将详细讲解如何在LabVIEW中使用树形控件进行拖曳...

    java动态树形菜单

    在Java Web开发中,动态树形菜单是一种常见的用户界面元素,尤其在管理系统的导航部分,它能够以层次结构展示数据,使用户能直观地浏览和操作复杂的数据结构。本示例是一个基于Java实现的JSP动态树形菜单功能,旨在...

    bootstrap树形下拉框 下拉框树形菜单

    var treeData = [/* 树形数据结构 */]; $('#treeview').treeview({ data: treeData, expandIcon: 'glyphicon glyphicon-minus', collapseIcon: 'glyphicon glyphicon-plus', nodeIcon: 'glyphicon glyphicon-...

    java动态树形菜单与分页

    在Java开发中,动态树形菜单和分页是常见的需求,尤其在构建Web应用程序时,它们对于用户界面的交互性和数据管理的效率至关重要。本文将深入探讨这两个概念以及如何在Java环境中实现它们。 首先,我们来看动态树形...

    react-antd table树形数据默认展开行实现jsx文件

    react-antd table树形数据默认展开行实现jsx文件

    数据结构课程设计-树形目录结构.docx

    数据结构课程设计中,树形目录结构是一种关键的非线性数据结构,它在计算机科学领域,尤其是在操作系统、人工智能和数据库系统中有着广泛的应用。树型结构能够有效地描绘具有层级关系的对象,比如在操作系统中,文件...

    SSH+Easyui之TreeGrid树形展现数据

    3. **Hibernate DAO**:编写DAO类,使用HQL或SQL查询数据库,获取树形数据。 4. **数据转换为JSON**:将Service层获取的数据转换为JSON格式,可以使用Jackson或Gson等库进行转换。 5. **EasyUI TreeGrid配置**:在...

    把扁平化的数据转换成树形结构的JSON

    在许多应用场景中,我们可能需要将扁平化的数据结构转换为树形结构,以便更好地理解和操作数据。扁平化数据通常是线性的,而树形结构则能反映数据之间的层级关系,这对于表示目录、菜单、组织结构等非常有用。本话题...

    微信小程序树形组件微信小程序树形组件

    在实际应用中,树形数据通常以JSON格式存在,我们需要先对数据进行预处理,例如添加`isExpanded`(是否展开)和`isChecked`(是否选中)等状态字段,以便在组件中使用。 5. **样式设计**: 树形组件的样式设计...

    labview树形控件的使用

    在LabVIEW中,树形控件是一种非常实用的数据组织和显示工具,它可以帮助用户以层次结构的方式展示和操作数据。在本文中,我们将详细探讨如何在LabVIEW2019中有效地使用树形控件。 首先,树形控件的基本概念。在...

    关系数据库存储树形结构数据的理想实践

    随着数据量的增大,更应考虑数据索引、查询优化和事务管理等技术,这些都会影响到树形数据在关系数据库中的存储效率和响应时间。 最后,虽然当前文档中出现了部分OCR扫描错误,导致一些文字无法识别,但是不影响...

    LABVIEW树形结构实例

    这个VI可能是用于初始化或构建树形结构的,它可能负责加载数据到树形控件中,根据特定的索引或数据结构建立节点层次。 4. **Get All.vi、Get Children.vi、Get Siblings.vi、Get Parent.vi** 这些VIs分别用于获取...

    sql树形数据处理示例(Jet wang 最新整理)

    在SQL数据库中,树形数据结构是一种常见的非关系型数据模型,它用于表示层次关系或具有父子关系的数据。本示例由Jet Wang最新整理,旨在帮助我们理解和掌握如何在SQL中处理这种类型的数据。以下是对SQL树形数据处理...

    excel树形字典,导入数据库

    "Excel树形字典,导入数据库"这个主题就聚焦于如何将结构化的Excel数据,特别是树形结构的数据,有效地整合到数据库系统中。 首先,我们需要理解什么是"树形字典"。在Excel中,树形字典通常指的是通过表格形式表示...

Global site tag (gtag.js) - Google Analytics