递归管理树形结构数据,java技师编制程序基础学

时间:2019-10-09 03:38来源:编程技术
在实战开辟中平常有要求处理树形菜单、树形目录等之类业务供给。而对此这种产品,在规划数据库时也提出使用id-----parentId的构造来做。可是最后前端突显多用hightChart或许Echart插件来

在实战开辟中平常有要求处理树形菜单、树形目录等之类业务供给。而对此这种产品,在规划数据库时也提出使用id<----->parentId的构造来做。可是最后前端突显多用hightChart或许Echart插件来促成。所以在给前端数据时,最佳的做法正是把数据库结构话的多寡管理成treeJson格式。本文就回顾介绍以递归方式管理此数据。

Java是一种能够编写跨平台运用软件的面向对象的主次设计语言。Java 技能具备卓越的通用性、高效性、平台移植性和安全性,布满应用于PC、数据基本、游戏调控台、科学一级Computer、移动电话和网络,同不常候负有满世界最大的开荒者职业社会群众体育。

数据库表结构

id name type parentId
1 root 1 0
2 a 1 1
3 b 1 1
4 c 1 1
5 d 1 2
6 e 1 2
7 f 1 3
8 g 1 7

给您读书路径:html-css-js-jq-javase-数据库-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm

终极想要的效应

澳门金莎娱乐网站 1image.png

澳门金莎娱乐网站 2

java 递归完结代码

package com.br.usercenter;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;import org.apache.commons.collections.map.HashedMap;import java.util.ArrayList;import java.util.List;import java.util.Map;/** * @author jack cooper * @create 2017-09-15 16:53 */public class TreeRecursion { public static void main(String[] args) { Map<String,Node> nodes = new HashedMap(); //模拟数据库存储树结构 nodes.put("1",new Node("1","root",1,"0")); nodes.put("2",new Node("2","a",1,"1")); nodes.put("3",new Node("3","b",1,"1")); nodes.put("4",new Node("4","c",1,"1")); nodes.put("5",new Node("5","d",1,"2")); nodes.put("6",new Node("6","e",1,"2")); nodes.put("7",new Node("7","f",1,"3")); nodes.put("8",new Node("8","g",1,"7")); System.out.println("result:" + JSON.toJSONString(getNodeJson("0",nodes))); } /** * 递归处理 数据库树结构数据->树形json * @param nodeId * @param nodes * @return */ public static JSONArray getNodeJson(String nodeId, Map<String,Node> nodes){ //当前层级当前node对象 Node cur = nodes.get; //当前层级当前点下的所有子节点(实战中不要慢慢去查,一次加载到集合然后慢慢处理) List<Node> childList = getChildNodes(nodeId,nodes); JSONArray childTree = new JSONArray(); for (Node node : childList) { JSONObject o = new JSONObject(); o.put("name", node.getName; o.put("type", node.getType; JSONArray childs = getNodeJson(node.getId; //递归调用该方法 if(!childs.isEmpty { o.put("children",childs); } childTree.fluentAdd; } return childTree; } /** * 获取当前节点的所有子节点 * @param nodeId * @param nodes * @return */ public static List<Node> getChildNodes(String nodeId, Map<String,Node> nodes){ List<Node> list = new ArrayList<>(); for (String key : nodes.keySet { if(nodes.get.getParentId().equals{ list.add(nodes.get; } } return list; }}class Node{ public String id ; public String name; public Integer type; public String parentId; public Node(String id, String name, Integer type, String parentId) { this.id = id; this.name = name; this.type = type; this.parentId = parentId; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getType() { return type; } public void setType(Integer type) { this.type = type; } public String getParentId() { return parentId; } public void setParentId(String parentId) { this.parentId = parentId; }}

澳门金莎娱乐网站,在实战开辟中时时有亟待管理树形菜单、树形目录等等等业务须求。而对于这种产品,在陈设数据库时也建议利用id<----->parentId的组织来做。不过最终前端展现多用hightChart或许Echart插件来贯彻。所以在给前端数据时,最佳的做法正是把数据库结构话的数额管理成treeJson格式。本文就总结介绍以递归情势管理此数据。

末了结出json

[ { "children": [ { "children": [ { "children": [ { "name": "g", "type": 1 } ], "name": "f", "type": 1 } ], "name": "b", "type": 1 }, { "children": [ { "name": "d", "type": 1 }, { "name": "e", "type": 1 } ], "name": "a", "type": 1 }, { "name": "c", "type": 1 } ], "name": "root", "type": 1 }]

多少库表结构

用echart管理最终效果

访问

澳门金莎娱乐网站 3

小编推荐二个学Java的学习裙【 六五零,五五四,六零七 】,无论你是大拿仍旧小白,是想转行依然想入行都足以来精通一齐发展一齐读书!裙内有开拓工具,比较多干货和技能资料分享!

最终想要的效果与利益

澳门金莎娱乐网站 4

java 递归完成代码

澳门金莎娱乐网站 5

澳门金莎娱乐网站 6

小编推荐二个学Java的读书裙【 六五零,五五四,六零七 】,无论你是大咖照旧小白,是想转行依然想入行都能够来询问一同发展一同读书!裙内有开辟工具,非常多干货和技巧资料分享!

澳门金莎娱乐网站 7

澳门金莎娱乐网站 8

作者推荐二个学Java的学习裙【 六五零,五五四,六零七 】,无论你是大牛依然小白,是想转行依然想入行都能够来精通一齐前进一同学习!裙内有开采工具,非常多干货和本事资料分享!

说起底结果json

澳门金莎娱乐网站 9

澳门金莎娱乐网站 10

澳门金莎娱乐网站 11

澳门金莎娱乐网站 12

编辑:编程技术 本文来源:递归管理树形结构数据,java技师编制程序基础学

关键词: