栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用递归算法结合数据库解析成Java树形结构的代码解析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用递归算法结合数据库解析成Java树形结构的代码解析

1、准备表结构及对应的表数据

a、表结构:

create table TB_TREE
(
CID NUMBER not null,
CNAME VARCHAr2(50),
PID NUMBER //父节点
)

b、表数据:

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);

2、TreeNode对象,对应tb_tree

public class TreeNode implements Serializable {
private Integer cid;
private String cname;
private Integer pid;
private List nodes = new ArrayList();
public TreeNode() {
}
//getter、setter省略
}

3、测试数据

public class TreeNodeTest {
@Test
public void loadTree() throws Exception{
System.out.println(JsonUtils.javaToJson(recursiveTree(1)));
}

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 childTreeNodes = personService.queryTreeNode(cid); 
//遍历子节点
for(TreeNode child : childTreeNodes){
TreeNode n = recursiveTree(child.getCid()); //递归
node.getNodes().add(n);
}
return node;
}
}

输出的json格式如下:

{
  "cid": 1,
  "nodes": [
    {
      "cid": 2,
      "nodes": [
 {
   "cid": 11,
   "nodes": [
   ],
   "cname": "密云县",
   "pid": 2
 }
      ],
      "cname": "北京市",
      "pid": 1
    },
    {
      "cid": 3,
      "nodes": [
 {
   "cid": 5,
   "nodes": [
     {
"cid": 7,
"nodes": [
],
"cname": "海珠区",
"pid": 5
     },
     {
"cid": 8,
"nodes": [
],
"cname": "天河区",
"pid": 5
     }
   ],
   "cname": "广州市",
   "pid": 3
 },
 {
   "cid": 6,
   "nodes": [
     {
"cid": 9,
"nodes": [
],
"cname": "福田区",
"pid": 6
     },
     {
"cid": 10,
"nodes": [
],
"cname": "南山区",
"pid": 6
     }
   ],
   "cname": "深圳市",
   "pid": 3
 }
      ],
      "cname": "广东省",
      "pid": 1
    },
    {
      "cid": 4,
      "nodes": [
 {
   "cid": 12,
   "nodes": [
   ],
   "cname": "浦东",
   "pid": 4
 }
      ],
      "cname": "上海市",
      "pid": 1
    }
  ],
  "cname": "中国",
  "pid": 0
}

总结

以上所述是小编给大家介绍的使用递归算法结合数据库解析成Java树形结构的代码解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对考高分网网站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/144511.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号