全网整合营销服务商

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

免费咨询热线: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接口返回省市区树形结构的实现  # 递归  # 密云县  # 福田  # 上海市  # 广东省  # 广州市  # 北京市  # 深圳市  # 小编  # 中国  # 南山  # 在此  # 遍历  # 给大家  # 所述  # 给我留言  # 感谢大家  # 疑问请  # 有任何  # 测试数据 


相关文章: 建站之星手机一键生成:多端自适应+小程序开发快速建站指南  如何彻底删除建站之星生成的Banner?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  如何制作网站标识牌,动态网站如何制作(教程)?  建站之星安装后如何配置SEO及设计样式?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  海南网站制作公司有哪些,海口网是哪家的?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  潮流网站制作头像软件下载,适合母子的网名有哪些?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  建站之星24小时客服电话如何获取?  利用JavaScript实现拖拽改变元素大小  如何设置并定期更换建站之星安全管理员密码?  定制建站流程步骤详解:一站式方案设计与开发指南  宝塔Windows建站如何避免显示默认IIS页面?  如何在云指建站中生成FTP站点?  建站之星免费模板:自助建站系统与智能响应式一键生成  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  如何快速登录WAP自助建站平台?  广州营销型建站服务商推荐:技术优势与SEO优化解析  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  音响网站制作视频教程,隆霸音响官方网站?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  如何通过PHP快速构建高效问答网站功能?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  如何通过cPanel快速搭建网站?  html制作网站的步骤有哪些,iapp如何添加网页?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  兔展官网 在线制作,怎样制作微信请帖?  如何在万网自助建站平台快速创建网站?  建站之星后台管理:高效配置与模板优化提升用户体验  网站制作免费,什么网站能看正片电影?  网站制作公司,橙子建站是合法的吗?  网站制作说明怎么写,简述网页设计的流程并说明原因?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  建站之星伪静态规则如何设置?  如何快速搭建高效简练网站?  已有域名和空间,如何快速搭建网站?  建站之星如何助力企业快速打造五合一网站?  如何自定义建站之星模板颜色并下载新样式?  如何挑选最适合建站的高性能VPS主机?  如何在宝塔面板创建新站点?  建站之星如何优化SEO以实现高效排名?  无锡营销型网站制作公司,无锡网选车牌流程?  如何在万网自助建站中设置域名及备案?  如何用西部建站助手快速创建专业网站?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  测试制作网站有哪些,测试性取向的权威测试或者网站? 

您的项目需求

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