全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

使用递归算法结合数据库解析成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)));
}
/**
* 递归算法解析成树形结构
*
* @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 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树形结构的代码解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# 递归算法  # java树形结构  # Java递归遍历树形结构的实现代码  # 使用递归删除树形结构的所有子节点(java和mysql实现)  # Java创建树形结构算法实例代码  # java实现省市区转换成树形结构  # Java实现树形结构的示例代码  # Java数据封装树形结构代码实例  # java转树形结构工具类详解  # 详解Java递归实现树形结构的两种方式  # Java接口返回省市区树形结构的实现  # 递归  # 密云县  # 福田  # 上海市  # 广东省  # 广州市  # 北京市  # 深圳市  # 小编  # 中国  # 南山  # 在此  # 遍历  # 给大家  # 所述  # 给我留言  # 感谢大家  # 疑问请  # 有任何  # 测试数据 


相关文章: 无锡营销型网站制作公司,无锡网选车牌流程?  C#如何在一个XML文件中查找并替换文本内容  建站主机选购指南:核心配置优化与品牌推荐方案  如何在服务器上配置二级域名建站?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  建站之星多图banner生成与模板自定义指南  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  Thinkphp 中 distinct 的用法解析  如何在云指建站中生成FTP站点?  如何通过智能用户系统一键生成高效建站方案?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  如何快速打造个性化非模板自助建站?  广州建站公司哪家好?十大优质服务商推荐  微信h5制作网站有哪些,免费微信H5页面制作工具?  网站图片在线制作软件,怎么在图片上做链接?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  ,石家庄四十八中学官网?  网站制作壁纸教程视频,电脑壁纸网站?  网站制作新手教程,新手建设一个网站需要注意些什么?  建站主机核心功能解析:服务器选择与网站搭建流程指南  制作网站外包平台,自动化接单网站有哪些?  贸易公司网站制作流程,出口贸易网站设计怎么做?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  网站好制作吗知乎,网站开发好学吗?有什么技巧?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  为什么Go需要go mod文件_Go go mod文件作用说明  活动邀请函制作网站有哪些,活动邀请函文案?  深圳网站制作培训,深圳哪些招聘网站比较好?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  如何选择可靠的免备案建站服务器?  在线制作视频的网站有哪些,电脑如何制作视频短片?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  制作网站公司那家好,网络公司是做什么的?  如何配置FTP站点权限与安全设置?  如何制作算命网站,怎么注册算命网站?  建站之星北京办公室:智能建站系统与小程序生成方案解析  网站微信制作软件,如何制作微信链接?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  如何用PHP快速搭建CMS系统?  如何在景安服务器上快速搭建个人网站?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  C++如何编写函数模板?(泛型编程入门)  建站之星微信建站一键生成小程序+多端营销系统  浅谈Javascript中的Label语句  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  如何快速搭建个人网站并优化SEO?  如何在阿里云香港服务器快速搭建网站?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。