亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java實現樹形結構的代碼怎么寫

發布時間:2022-05-16 09:13:22 來源:億速云 閱讀:217 作者:zzz 欄目:開發技術

本篇內容介紹了“Java實現樹形結構的代碼怎么寫”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

數據庫表結構

Java實現樹形結構的代碼怎么寫

實現思路

1、拿到有父子節點的集合數據

2、遍歷集合數據,拿到所有的根節點

3、遍歷根節點,拿到所有的子節點

4、遞歸子節點,將遞歸的子節點接上其父節點,直到子節點為空,遞歸完成

5、遞歸好后以集合形式返回,返回前端時以JSON格式轉換后返回

具體代碼

1、造數據,和數據庫表數據一致

package com.lyq.generateTree;
 
import com.alibaba.fastjson.JSON;
 
import java.util.ArrayList;
import java.util.List;
 
/**
 * @author : [LiuYanQiang]
 * @version : [v1.0]
 * @className : TreeMain
 * @description : [描述說明該類的功能]
 * @createTime : [2022/5/3 0:05]
 * @updateUser : [LiuYanQiang]
 * @updateTime : [2022/5/3 0:05]
 * @updateRemark : [描述說明本次修改內容]
 */
public class TreeMain {
    public static void main(String[] args) {
        List<Tree> list = new ArrayList<>();
 
        //造數據
        list.add(new Tree("22650", "0", "第一周"));
        list.add(new Tree("22651", "22650", "1.1  隨堂練習:《你認為以下屬于人工智能的是什么呢?》,時間:0.5min"));
        list.add(new Tree("22652", "22650", "1.2  主題討論:《使用循環代碼塊繪制正五角星》,時間:5min"));
        list.add(new Tree("22653", "22650", "1.3  主題討論:《延時測試》,時間:0.5min"));
        list.add(new Tree("22654", "22650", "1.4  調查問卷:《測試延時時間》, 時間:0.5min"));
        list.add(new Tree("22655", "22650", "1.5  研究與挑戰:翟文彪老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22656", "22650", "1.6  研究與挑戰:米新江教授開播啦,時間:1min,[N]"));
        list.add(new Tree("22657", "22656", "1.6.1  研究與挑戰:丁中文老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22658", "22656", "1.6.2  研究與挑戰:郝曉軍老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22659", "22656", "1.6.3  研究與挑戰:張娟老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22660", "22656", "1.6.4  研究與挑戰:王懷軍老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22661", "22656", "1.6.5  研究與挑戰:何操老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22662", "22656", "1.6.6  研究與挑戰:武新麗老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22663", "22656", "1.6.7  一鍵簽到:人臉識別,時間:2min"));
        list.add(new Tree("22664", "22656", "1.6.8  手勢簽到:人臉識別22,時間:2min"));
        list.add(new Tree("22665", "22656", "1.6.9  研究與挑戰:吳欣明老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22666", "22656", "1.6.10  研究與挑戰:程艷艷老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22667", "22656", "1.6.11  研究與挑戰:本學期課程內容,時間:0.5min"));
        list.add(new Tree("22668", "22656", "1.6.12  研究與挑戰:米老師的教學團隊介紹,時間:0.3min"));
        list.add(new Tree("22669", "22650", "1.7  研究與挑戰:米老師的教學團隊介紹,時間:0.3min"));
        list.add(new Tree("22670", "22650", "1.8  研究與挑戰:米老師的教學團隊介紹,時間:0.3min"));
        list.add(new Tree("22671", "22650", "1.9  研究與挑戰:助教機器人提醒您參與活動,時間:2min"));
        list.add(new Tree("22672", "22650", "1.10  研究與挑戰:AR系統使用教程-學生端,時間:5min"));
        list.add(new Tree("22673", "22672", "1.10.1  研究與挑戰:不一樣的課堂修改版,時間:0.5min"));
        list.add(new Tree("22674", "22673", "1.10.1.1  研究與挑戰:下載AR APP,時間:8min"));
        list.add(new Tree("22675", "22674", "1.10.1.1.1  研究與挑戰:修改版手機端AR助教機器人的登錄,時間:5min"));
        list.add(new Tree("22676", "22674", "1.10.1.1.2  研究與挑戰:app頁面展示,時間:2min"));
        list.add(new Tree("22677", "22674", "1.10.1.1.3  研究與挑戰:使用網頁版方式, 時間:3min"));
        list.add(new Tree("22678", "22674", "1.10.1.1.4  研究與挑戰:《使用學習通賬號密碼登錄AR網頁版》,時間:5min"));
        list.add(new Tree("22679", "22674", "1.10.1.1.5  主題討論:修改時間2022年4月4日《上傳:進入AR網頁版后的界面》,時間:3min"));
        list.add(new Tree("22680", "22673", "1.10.1.2  研究與挑戰:AR學生端教程視頻,時間:2min"));
        list.add(new Tree("22681", "22672", "1.10.2  研究與挑戰:修改時間2022年4月4日溫馨提示-釘釘,時間:0.3min"));
 
 
        list = new ReplacementTree().builTree(list);
 
        String jsonString = JSON.toJSONString(list);
        System.out.println(jsonString);
    }
}

2、樹型結構實體類

package com.lyq.generateTree;
 
 
import java.util.ArrayList;
import java.util.List;
 
/**
 * @author : [LiuYanQiang]
 * @version : [v1.0]
 * @className : ReplacementTree
 * @description : [樹型結構裝換]
 * @createTime : [2022/5/2 23:37]
 * @updateUser : [LiuYanQiang]
 * @updateTime : [2022/5/2 23:37]
 * @updateRemark : [描述說明本次修改內容]
 */
public class ReplacementTree {
 
    /*
     * @version V1.0
     * Title: builTree
     * @author LiuYanQiang
     * @description 始樹形結構創建
     * @createTime  2022/5/3 0:18
     * @param [list]
     * @return java.util.List<com.lyq.generateTree.Tree>*/
    public List<Tree> builTree(List<Tree> list) {
        List<Tree> treeList = new ArrayList<>();
        for (Tree tree : this.getRootNode(list)) {
            //建立子樹節點
            tree = this.buildChilTree(tree,list);
            //為根節點設置子樹節點
            treeList.add(tree);
        }
        return treeList;
    }
 
    /*
     * @version V1.0
     * Title: buildChilTree
     * @author LiuYanQiang
     * @description 通過遞歸來創建子樹形結構
     * @createTime  2022/5/3 0:18
     * @param [tree, list]
     * @return com.lyq.generateTree.Tree*/
    private Tree buildChilTree(Tree tree,List<Tree> list) {
        List<Tree> treeList = new ArrayList<>();
        for (Tree t : list) {
            //判斷當前父節點是否存在子節點
            if (t.getP_id().equals(tree.getId())) {
                treeList.add(this.buildChilTree(t,list));
            }
        }
        tree.setChildren(treeList);
        return tree;
    }
 
    /*
     * @version V1.0
     * Title: getRootNode
     * @author LiuYanQiang
     * @description 獲取全部根節點
     * @createTime  2022/5/3 0:18
     * @param [list]
     * @return java.util.List<com.lyq.generateTree.Tree>*/
    private List<Tree> getRootNode(List<Tree> list) {
        List<Tree> rootList = new ArrayList<>();
        for (Tree tree : list) {
            if (tree.getP_id().equals("0")) {
                rootList.add(tree);
            }
        }
        return rootList;
    }
}

最后返回情況如下

Java實現樹形結構的代碼怎么寫

“Java實現樹形結構的代碼怎么寫”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

炉霍县| 会昌县| 泰宁县| 白城市| 沐川县| 铁岭县| 格尔木市| 洪湖市| 杭锦后旗| 蓬安县| 额敏县| 开封县| 六枝特区| 南丹县| 佛坪县| 永嘉县| 潍坊市| 新津县| 米脂县| 昭苏县| 油尖旺区| 凤翔县| 福泉市| 三台县| 淮阳县| 江永县| 进贤县| 长海县| 永仁县| 泉州市| 岫岩| 内乡县| 张家川| 清涧县| 柘城县| 镇宁| 鄄城县| 涞源县| 宜黄县| 南溪县| 无锡市|