前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java 实现平层数组转换为层级对象

java 实现平层数组转换为层级对象

作者头像
用户2436820
发布2018-09-05 10:29:14
1.3K0
发布2018-09-05 10:29:14
举报

sql

代码语言:javascript
复制
insert into tb_tree (CID, CNAME, PID) values (1, '中国', 0);
insert into tb_tree (CID, CNAME, PID) values (2, '北京市', 1);
insert into tb_tree (CID, CNAME, PID) values (3, '广东省', 1);
insert into tb_tree (CID, CNAME, PID) values (4, '上海市', 1);
insert into tb_tree (CID, CNAME, PID) values (5, '广州市', 3);
insert into tb_tree (CID, CNAME, PID) values (6, '深圳市', 3);
insert into tb_tree (CID, CNAME, PID) values (7, '海珠区', 5);
insert into tb_tree (CID, CNAME, PID) values (8, '天河区', 5);
insert into tb_tree (CID, CNAME, PID) values (9, '福田区', 6);
insert into tb_tree (CID, CNAME, PID) values (10, '南山区', 6);
insert into tb_tree (CID, CNAME, PID) values (11, '密云县', 2);
insert into tb_tree (CID, CNAME, PID) values (12, '浦东', 4);

RecursiveTest 递归实现

代码语言:javascript
复制
package recursive;

import me.shib.java.lib.utils.JsonUtil;

import java.util.List;


public class RecursiveTest {

    public static void main(String[] args) {
        JsonUtil jsonUtil = new JsonUtil();
        RecursiveTest recursive = new RecursiveTest();
        jsonUtil.toJson(recursive.recursiveTree(1));

    }

    /**
     * 递归算法解析成树形结构
     *
     * @param cid
     * @return
     * @author jiqinlin
     */
    public TreeNode recursiveTree(int cid) {
        //根据cid获取节点对象(SELECT * FROM tb_tree t WHERE t.cid=?)
        TreeNode node = personService.getreeNode(cid);
        //查询cid下的所有子节点(SELECT * FROM tb_tree t WHERE t.pid=?)
        List<TreeNode> childTreeNodes =personService.queryTreeNode(cid);
        //遍历子节点
        for (TreeNode child : childTreeNodes) {
            TreeNode n = recursiveTree(child.getCid()); //递归
            node.getNodes().add(n);
        }

//        return node;
        return node;
    }
}

树的结点类

代码语言:javascript
复制
package recursive;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class TreeNode implements Serializable {

    private Integer cid;
    private String cname;
    private Integer pid;
    private List nodes = new ArrayList();

    public TreeNode() {
    }

    public Integer getCid() {
        return cid;
    }

    public String getCname() {
        return cname;
    }

    public Integer getPid() {
        return pid;
    }

    public List getNodes() {
        return nodes;
    }

    public void setCid(Integer cid) {
        this.cid = cid;
    }

    public void setCname(String cname) {
        this.cname = cname;
    }

    public void setPid(Integer pid) {
        this.pid = pid;
    }

    public void setNodes(List nodes) {
        this.nodes = nodes;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • sql
  • RecursiveTest 递归实现
  • 树的结点类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档