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小时内与您取得联系。