博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java递归获得TreeJson
阅读量:6207 次
发布时间:2019-06-21

本文共 2954 字,大约阅读时间需要 9 分钟。

联合MyBatis,由Map获取

源码如下

package com.zl.demo;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * Java递归获取TreeJson * @author ZhangLi * @date 2019年6月18日 上午11:10:45 * @WeiXin zl4828 * @备注 沫沫金原创提供,仅供参考 */public class TreeJson {    public static void main(String[] args) {        TreeJson treeJson = new TreeJson();        treeJson.treeMap.add(new HashMap
(){
{ put("ID","0"); put("NAME","根节点"); put("PID","null"); }}); treeJson.treeMap.add(new HashMap
(){
{ put("ID","1"); put("NAME","节点1"); put("PID","0"); }}); treeJson.treeMap.add(new HashMap
(){
{ put("ID","2"); put("NAME","节点2"); put("PID","0"); }}); treeJson.treeMap.add(new HashMap
(){
{ put("ID","3"); put("NAME","节点3"); put("PID","0"); }}); treeJson.treeMap.add(new HashMap
(){
{ put("ID","11"); put("NAME","节点11"); put("PID","1"); }}); treeJson.treeMap.add(new HashMap
(){ { put("ID","12"); put("NAME","节点12"); put("PID","1"); }}); treeJson.treeMap.add(new HashMap
(){ { put("ID","13"); put("NAME","节点13"); put("PID","1"); }}); System.out.println(treeJson.recursiveTree("0")); } private List
> treeMap = new ArrayList
>(); //全局变量 /** * 递归算法解析成树形结构 * @param pid */ public Map recursiveTree(String pid) { Map node = getNodeById(pid); List
> childrenList = new ArrayList
>(); if(null==node){ return node; } List
> childTreeNodes = getChildTreeById(pid); for(Map child : childTreeNodes){ Map n = recursiveTree(String.valueOf(child.get("ID"))); childrenList.add(n); } node.put("children",childrenList); return node; } /** * 根据pid查询节点对象 */ public Map getNodeById(String pid){ for (Map node : treeMap) { if(null != pid){ if (pid.equals(node.get("ID"))) { return node; } } } return null; } /** * 根据父节点pid获取所有了节点 */ public List
> getChildTreeById(String pid){ List
> list = new ArrayList
>(); if(null != treeMap){ for (Map node : treeMap) { if(null != pid){ if (pid.equals(node.get("PID"))) { list.add(node); } } } } return list; }}

应用场景

例如,Echarts树形图形
Java递归获得TreeJson

注意,使用JSON转换

{    name: '根节点',    pid: null,    id: 0,    children: [{        name: '节点1',        pid: 0,        id: 1,        children: [{            name: '节点11',            pid: 1,            id: 11,            children: []        }, {            name: '节点12',            pid: 1,            id: 12,            children: []        }, {            name: '节点13',            pid: 1,            id: 13,            children: []        }]    }, {        name: '节点2',        pid: 0,        id: 2,        children: []    }, {        name: '节点3',        pid: 0,        id: 3,        children: []    }]};

以上,拷贝本地运行,任意应用。

转载于:https://blog.51cto.com/zl0828/2410368

你可能感兴趣的文章
Linux命令-自动挂载文件/etc/fstab功能详解
查看>>
linux远程登录三种方式telnet,ssh,vnc
查看>>
|与||的区别
查看>>
Windows server 2012 之路由功能
查看>>
红帽436——HA高可用集群之概念篇
查看>>
httpd2.4源码编译
查看>>
shell循环和分支
查看>>
全国80几所重点大学ftp资源库(经常逛逛可能有惊喜哦)很难收集的,知道其他的友友可以留言完善...
查看>>
Mysql数据库多实例配置
查看>>
我的友情链接
查看>>
Cntlm安装和配置心得
查看>>
vue入门
查看>>
我的友情链接
查看>>
Prototype 字符串
查看>>
树状数组
查看>>
Windows Azure 之服务总线中继服务
查看>>
【j360-boot】Spring-boot系列三(崩溃模式,不是你崩就是电脑崩)
查看>>
MySQL 主从同步故障处理-小记
查看>>
有源代码的iphone项目
查看>>
java开发环境:还在配classpath?你out啦!
查看>>