最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用遞歸算法結(jié)合數(shù)據(jù)庫(kù)解析成Java樹(shù)形結(jié)構(gòu)的代碼解析

 更新時(shí)間:2017年09月04日 11:08:45   作者:Ruthless  
這篇文章主要介紹了使用遞歸算法結(jié)合數(shù)據(jù)庫(kù)解析成Java樹(shù)形結(jié)構(gòu)的代碼解析的相關(guān)資料,需要的朋友可以參考下

1、準(zhǔn)備表結(jié)構(gòu)及對(duì)應(yīng)的表數(shù)據(jù)

a、表結(jié)構(gòu):

create table TB_TREE
(
CID NUMBER not null,
CNAME VARCHAR2(50),
PID NUMBER //父節(jié)點(diǎn)
)

b、表數(shù)據(jù):

insert into tb_tree (CID, CNAME, PID) values (1, '中國(guó)', 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, '海珠區(qū)', 5);
insert into tb_tree (CID, CNAME, PID) values (8, '天河區(qū)', 5);
insert into tb_tree (CID, CNAME, PID) values (9, '福田區(qū)', 6);
insert into tb_tree (CID, CNAME, PID) values (10, '南山區(qū)', 6);
insert into tb_tree (CID, CNAME, PID) values (11, '密云縣', 2);
insert into tb_tree (CID, CNAME, PID) values (12, '浦東', 4);

2、TreeNode對(duì)象,對(duì)應(yīng)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、測(cè)試數(shù)據(jù)

public class TreeNodeTest {
@Test
public void loadTree() throws Exception{
System.out.println(JsonUtils.javaToJson(recursiveTree(1)));
}
/**
* 遞歸算法解析成樹(shù)形結(jié)構(gòu)
*
* @param cid
* @return
* @author jiqinlin
*/
public TreeNode recursiveTree(int cid) {
//根據(jù)cid獲取節(jié)點(diǎn)對(duì)象(SELECT * FROM tb_tree t WHERE t.cid=?)
TreeNode node = personService.getreeNode(cid);
//查詢(xún)cid下的所有子節(jié)點(diǎn)(SELECT * FROM tb_tree t WHERE t.pid=?)
List childTreeNodes = personService.queryTreeNode(cid); 
//遍歷子節(jié)點(diǎn)
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": "海珠區(qū)",
              "pid": 5
            },
            {
              "cid": 8,
              "nodes": [
              ],
              "cname": "天河區(qū)",
              "pid": 5
            }
          ],
          "cname": "廣州市",
          "pid": 3
        },
        {
          "cid": 6,
          "nodes": [
            {
              "cid": 9,
              "nodes": [
              ],
              "cname": "福田區(qū)",
              "pid": 6
            },
            {
              "cid": 10,
              "nodes": [
              ],
              "cname": "南山區(qū)",
              "pid": 6
            }
          ],
          "cname": "深圳市",
          "pid": 3
        }
      ],
      "cname": "廣東省",
      "pid": 1
    },
    {
      "cid": 4,
      "nodes": [
        {
          "cid": 12,
          "nodes": [
          ],
          "cname": "浦東",
          "pid": 4
        }
      ],
      "cname": "上海市",
      "pid": 1
    }
  ],
  "cname": "中國(guó)",
  "pid": 0
}

總結(jié)

以上所述是小編給大家介紹的使用遞歸算法結(jié)合數(shù)據(jù)庫(kù)解析成Java樹(shù)形結(jié)構(gòu)的代碼解析,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 在java中獲取List集合中最大的日期時(shí)間操作

    在java中獲取List集合中最大的日期時(shí)間操作

    這篇文章主要介紹了在java中獲取List集合中最大的日期時(shí)間操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • Tk.mybatis零sql語(yǔ)句實(shí)現(xiàn)動(dòng)態(tài)sql查詢(xún)的方法(4種)

    Tk.mybatis零sql語(yǔ)句實(shí)現(xiàn)動(dòng)態(tài)sql查詢(xún)的方法(4種)

    有時(shí)候,查詢(xún)數(shù)據(jù)需要根據(jù)條件使用動(dòng)態(tài)查詢(xún),這時(shí)候需要使用動(dòng)態(tài)sql,本文主要介紹了Tk.mybatis零sql語(yǔ)句實(shí)現(xiàn)動(dòng)態(tài)sql查詢(xún)的方法,感興趣的可以了解一下
    2021-12-12
  • 解決SpringCloud Gateway采用OpenFeign遠(yuǎn)程調(diào)用失敗的問(wèn)題

    解決SpringCloud Gateway采用OpenFeign遠(yuǎn)程調(diào)用失敗的問(wèn)題

    在使用SpringCloud網(wǎng)關(guān)進(jìn)行統(tǒng)一鑒權(quán)和認(rèn)證過(guò)程中,通過(guò)OpenFeign遠(yuǎn)程調(diào)用鑒權(quán)服務(wù)器接口時(shí)可能會(huì)遇到遠(yuǎn)程調(diào)用失敗的問(wèn)題,這通常是因?yàn)镠ttpMessageConverters沒(méi)有被正確注入到Spring容器中
    2024-09-09
  • Nacos單機(jī)版安裝啟動(dòng)的全流程

    Nacos單機(jī)版安裝啟動(dòng)的全流程

    這篇文章主要介紹了Nacos單機(jī)版安裝啟動(dòng)的全流程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java中的main方法調(diào)用非靜態(tài)方法處理

    Java中的main方法調(diào)用非靜態(tài)方法處理

    這篇文章主要介紹了Java中的main方法調(diào)用非靜態(tài)方法處理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Java集合之同步容器詳解

    Java集合之同步容器詳解

    這篇文章主要為大家詳細(xì)介紹了Java集合之同步容器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Redisson分布式信號(hào)量RSemaphore的使用超詳細(xì)講解

    Redisson分布式信號(hào)量RSemaphore的使用超詳細(xì)講解

    這篇文章主要介紹了Redisson分布式信號(hào)量RSemaphore的使用,基于Redis的Redisson的分布式信號(hào)量RSemaphore采用了與java.util.concurrent.Semaphore相似的接口和用法
    2023-02-02
  • java如何獲取本機(jī)IP地址

    java如何獲取本機(jī)IP地址

    這篇文章主要為大家詳細(xì)介紹了java如何獲取本機(jī)IP地址,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • mybatis Invalid bound statement(not found)排坑記錄

    mybatis Invalid bound statement(not foun

    這篇文章主要介紹了mybatis Invalid bound statement(not found)排坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Springboot中的默認(rèn)日志框架配置詳解

    Springboot中的默認(rèn)日志框架配置詳解

    這篇文章主要介紹了Springboot中的默認(rèn)日志框架配置詳解,spring boot日志默認(rèn)會(huì)輸出到控制臺(tái),所以并不需要我們做過(guò)多配置,但不過(guò)不喜歡控制臺(tái)默認(rèn)日志格式,則可以使用logging.pattern.console屬性配置,需要的朋友可以參考下
    2023-09-09

最新評(píng)論

融水| 赤峰市| 淮北市| 新源县| 方山县| 大名县| 杨浦区| 凤城市| 若羌县| 义乌市| 临夏市| 格尔木市| 正安县| 兴国县| 桐乡市| 黄骅市| 临夏县| 山东省| 工布江达县| 温宿县| 金乡县| 宣武区| 桂平市| 读书| 神木县| 沛县| 芒康县| 肥西县| 潢川县| 崇义县| 越西县| 盐山县| 霸州市| 林甸县| 聊城市| 肥乡县| 阿荣旗| 桦川县| 盱眙县| 郓城县| 保康县|