树形数据后台组建
/** * 重新组建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)); } }
相关推荐
`filterTreeData` 函数就是针对这种数据结构设计的一个方法,用于遍历树形数据并根据指定条件删除对应的数据节点。 首先,我们分析给出的函数代码: ```javascript filterTreeData(data, ids) { let newData = ...
`树形`标签则表明这是一个关于树形数据结构的知识点。由于提供的压缩包文件名仅列出"JS实现树形结构",具体实现细节和代码示例需要解压文件查看。解压后,你将找到源代码、文档和示例,这些将有助于深入理解和应用...
2. **数据解析**:对于树形结构数据,需要逐级解析,可能涉及到递归方法,将每一层的数据转换成Java对象。这些对象可能包含父节点、子节点以及相关属性。 3. **数据映射**:将Excel中的列名与Oracle数据库表的字段...
这种查询方式可以高效地查询树形结构的数据,并且可以根据需要设置递归深度。 MySQL 中的树形结构查询可以使用存储过程来实现,存储过程是一种复杂的查询逻辑,可以将复杂的查询逻辑封装在存储过程中,以提高查询...
在SQL数据库中,树形数据结构是一种常见的关系表示方式,特别是在需要表示层级或者分类的数据时。例如,组织架构、产品目录、菜单系统等都可能涉及树形数据的存储和查询。本示例将深入探讨如何在SQL中处理这类数据,...
数据结构为数组中包含对象–树形结构,用Vue组件的写法实现以下的效果: 树形列表,缩进显示层级,第5级数据加底色,数据样式显色,点击展开折叠数据。本文为用Vue实现方式,另有一篇为用knockout.js的实现方法。 ...
在LabVIEW编程环境中,树形控件(Tree Control)是一种常用的数据展示和交互工具,它以层次结构的方式显示数据,用户可以通过展开、折叠节点来查看和操作数据。本教程将详细讲解如何在LabVIEW中使用树形控件进行拖曳...
在Java Web开发中,动态树形菜单是一种常见的用户界面元素,尤其在管理系统的导航部分,它能够以层次结构展示数据,使用户能直观地浏览和操作复杂的数据结构。本示例是一个基于Java实现的JSP动态树形菜单功能,旨在...
var treeData = [/* 树形数据结构 */]; $('#treeview').treeview({ data: treeData, expandIcon: 'glyphicon glyphicon-minus', collapseIcon: 'glyphicon glyphicon-plus', nodeIcon: 'glyphicon glyphicon-...
在Java开发中,动态树形菜单和分页是常见的需求,尤其在构建Web应用程序时,它们对于用户界面的交互性和数据管理的效率至关重要。本文将深入探讨这两个概念以及如何在Java环境中实现它们。 首先,我们来看动态树形...
react-antd table树形数据默认展开行实现jsx文件
数据结构课程设计中,树形目录结构是一种关键的非线性数据结构,它在计算机科学领域,尤其是在操作系统、人工智能和数据库系统中有着广泛的应用。树型结构能够有效地描绘具有层级关系的对象,比如在操作系统中,文件...
3. **Hibernate DAO**:编写DAO类,使用HQL或SQL查询数据库,获取树形数据。 4. **数据转换为JSON**:将Service层获取的数据转换为JSON格式,可以使用Jackson或Gson等库进行转换。 5. **EasyUI TreeGrid配置**:在...
在许多应用场景中,我们可能需要将扁平化的数据结构转换为树形结构,以便更好地理解和操作数据。扁平化数据通常是线性的,而树形结构则能反映数据之间的层级关系,这对于表示目录、菜单、组织结构等非常有用。本话题...
在实际应用中,树形数据通常以JSON格式存在,我们需要先对数据进行预处理,例如添加`isExpanded`(是否展开)和`isChecked`(是否选中)等状态字段,以便在组件中使用。 5. **样式设计**: 树形组件的样式设计...
在LabVIEW中,树形控件是一种非常实用的数据组织和显示工具,它可以帮助用户以层次结构的方式展示和操作数据。在本文中,我们将详细探讨如何在LabVIEW2019中有效地使用树形控件。 首先,树形控件的基本概念。在...
随着数据量的增大,更应考虑数据索引、查询优化和事务管理等技术,这些都会影响到树形数据在关系数据库中的存储效率和响应时间。 最后,虽然当前文档中出现了部分OCR扫描错误,导致一些文字无法识别,但是不影响...
这个VI可能是用于初始化或构建树形结构的,它可能负责加载数据到树形控件中,根据特定的索引或数据结构建立节点层次。 4. **Get All.vi、Get Children.vi、Get Siblings.vi、Get Parent.vi** 这些VIs分别用于获取...
在SQL数据库中,树形数据结构是一种常见的非关系型数据模型,它用于表示层次关系或具有父子关系的数据。本示例由Jet Wang最新整理,旨在帮助我们理解和掌握如何在SQL中处理这种类型的数据。以下是对SQL树形数据处理...
"Excel树形字典,导入数据库"这个主题就聚焦于如何将结构化的Excel数据,特别是树形结构的数据,有效地整合到数据库系统中。 首先,我们需要理解什么是"树形字典"。在Excel中,树形字典通常指的是通过表格形式表示...