一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 使用遞歸算法結合數據庫解析成Java樹形結構的代碼解析

使用遞歸算法結合數據庫解析成Java樹形結構的代碼解析

2020-12-26 14:36Ruthless Java教程

這篇文章主要介紹了使用遞歸算法結合數據庫解析成Java樹形結構的代碼解析的相關資料,需要的朋友可以參考下

1、準備表結構及對應的表數據

a、表結構:

?
1
2
3
4
5
6
create table TB_TREE
(
CID NUMBER not null,
CNAME VARCHAR2(50),
PID NUMBER //父節點
)

b、表數據:

?
1
2
3
4
5
6
7
8
9
10
11
12
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

?
1
2
3
4
5
6
7
8
9
public class TreeNode implements Serializable {
private Integer cid;
private String cname;
private Integer pid;
private List nodes = new ArrayList();
public TreeNode() {
}
//getter、setter省略
}

3、測試數據

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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格式如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
{
  "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樹形結構的代碼解析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/linjiqin/archive/2013/06/21/3148066.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 牛牛影院成人免费网页 | 国内精品伊人久久大香线焦 | 91调教| 门卫老张和女警花小说 | 摸咪网在线影院在线观看 | 色综合伊人色综合网亚洲欧洲 | 我的漂亮朋友在线观看全集免费 | h视频免费高清在线观看 | 热99精品只有里视频最新 | 成年人视频免费在线播放 | 色播导航 | 乳女教师欲乱动漫无修版动画3d | 九九精品免视看国产成人 | 久久婷婷丁香五月色综合啪免费 | 涩情主播在线翻车 | 国模丰满美女冰漪34d | 91一区二区在线观看精品 | 免费波多野结衣庭教师 | 秋霞理论一级在线观看手机版 | 免费一级特黄特色大片∵黄 | 男生和女生搞逼逼 | 欧美日本一道高清免费3区 欧美人做人爱a全程免费 | 拿捏小说 | 亚洲图片一区二区三区 | free嫩白的12sex性自由 | 成人性生交小说免费看 | 亚洲第一在线播放 | 91porn最新地址| 丁香成人社 | 深夜在线网站 | 99热久久这里只有精品23 | 扒开黑女人p大荫蒂老女人 扒开大腿狠狠挺进视频 | 日本在线观看免费观看完整版 | 日韩欧美亚洲一区二区综合 | 天天做日日做 | 羞羞视频免费观 | 美女视频在线观看视频 | 2021精品国夜夜天天拍拍 | 午夜欧美精品久久久久久久 | 色天天综合网色鬼综合 | 男人疯狂进女人下部视频动漫 |