使用递归算法结合数据库解析成Java树形结构的代码解析
发布时间 - 2026-01-11 03:05:48 点击率:次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接口返回省市区树形结构的实现
# 递归
# 密云县
# 福田
# 上海市
# 广东省
# 广州市
# 北京市
# 深圳市
# 小编
# 中国
# 南山
# 在此
# 遍历
# 给大家
# 所述
# 给我留言
# 感谢大家
# 疑问请
# 有任何
# 测试数据
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何创建自定义Artisan命令?(代码示例)
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
个人摄影网站制作流程,摄影爱好者都去什么网站?
Laravel如何与Pusher实现实时通信?(WebSocket示例)
如何在万网主机上快速搭建网站?
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
如何在不使用负向后查找的情况下匹配特定条件前的换行符
怎么用AI帮你设计一套个性化的手机App图标?
如何批量查询域名的建站时间记录?
如何撰写建站申请书?关键要点有哪些?
太平洋网站制作公司,网络用语太平洋是什么意思?
免费视频制作网站,更新又快又好的免费电影网站?
如何快速生成高效建站系统源代码?
黑客入侵网站服务器的常见手法有哪些?
再谈Python中的字符串与字符编码(推荐)
网站制作大概多少钱一个,做一个平台网站大概多少钱?
免费网站制作appp,免费制作app哪个平台好?
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
微信小程序 wx.uploadFile无法上传解决办法
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
原生JS实现图片轮播切换效果
利用JavaScript实现拖拽改变元素大小
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
使用C语言编写圣诞表白程序
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
如何在IIS中配置站点IP、端口及主机头?
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
Laravel如何自定义错误页面(404, 500)?(代码示例)
Laravel怎么为数据库表字段添加索引以优化查询
如何用西部建站助手快速创建专业网站?
LinuxCD持续部署教程_自动发布与回滚机制
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
C++时间戳转换成日期时间的步骤和示例代码
Laravel API资源类怎么用_Laravel API Resource数据转换
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
5种Android数据存储方式汇总
如何挑选高效建站主机与优质域名?
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
如何用IIS7快速搭建并优化网站站点?
Java遍历集合的三种方式
网站建设要注意的标准 促进网站用户好感度!
如何快速生成ASP一键建站模板并优化安全性?
如何快速搭建虚拟主机网站?新手必看指南
Laravel如何实现数据库事务?(DB Facade示例)
如何获取上海专业网站定制建站电话?
详解jQuery中基本的动画方法
python中快速进行多个字符替换的方法小结
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】

