91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Java遞歸獲得TreeJson

發布時間:2020-06-28 18:35:42 來源:網絡 閱讀:507 作者:沫沫金 欄目:軟件技術

聯合MyBatis,由Map獲取

源碼如下

package com.zl.demo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Java遞歸獲取TreeJson
 * @author ZhangLi
 * @date 2019年6月18日 上午11:10:45
 * @WeiXin zl4828
 * @備注 沫沫金原創提供,僅供參考
 */
public class TreeJson {
    public static void main(String[] args) {
        TreeJson treeJson = new TreeJson();
        treeJson.treeMap.add(new HashMap<String, Object>(){{
            put("ID","0");
            put("NAME","根節點");
            put("PID","null");
        }});
        treeJson.treeMap.add(new HashMap<String, Object>(){{
            put("ID","1");
            put("NAME","節點1");
            put("PID","0");
        }});
        treeJson.treeMap.add(new HashMap<String, Object>(){{
            put("ID","2");
            put("NAME","節點2");
            put("PID","0");
        }});
        treeJson.treeMap.add(new HashMap<String, Object>(){{
            put("ID","3");
            put("NAME","節點3");
            put("PID","0");
        }});
        treeJson.treeMap.add(new HashMap<String, Object>(){{
            put("ID","11");
            put("NAME","節點11");
            put("PID","1");
        }});
        treeJson.treeMap.add(new HashMap<String, Object>(){{
            put("ID","12");
            put("NAME","節點12");
            put("PID","1");
        }});
        treeJson.treeMap.add(new HashMap<String, Object>(){{
            put("ID","13");
            put("NAME","節點13");
            put("PID","1");
        }});
        System.out.println(treeJson.recursiveTree("0"));
    }

    private List<Map<String, Object>> treeMap = new ArrayList<Map<String, Object>>();  //全局變量

    /**
     * 遞歸算法解析成樹形結構
     * @param pid
     */
    public Map recursiveTree(String pid) {
        Map node = getNodeById(pid);
        List<Map<String, Object>> childrenList = new ArrayList<Map<String, Object>>();
        if(null==node){
            return node;
        }
        List<Map<String, Object>> childTreeNodes  = getChildTreeById(pid);
        for(Map child : childTreeNodes){
            Map n = recursiveTree(String.valueOf(child.get("ID")));
            childrenList.add(n);
        }
        node.put("children",childrenList);
        return node;
    }

    /**
     * 根據pid查詢節點對象
     */
    public Map getNodeById(String pid){
        for (Map node : treeMap) {
            if(null != pid){
                if (pid.equals(node.get("ID"))) {
                    return node;
                }
            }
        }
        return null;
    }
    /**
     * 根據父節點pid獲取所有了節點
     */
    public List<Map<String, Object>> getChildTreeById(String pid){
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        if(null != treeMap){
            for (Map node : treeMap) {
                if(null != pid){
                    if (pid.equals(node.get("PID"))) {
                        list.add(node);
                    }
                }
            }
        }
        return list;
    }

}

應用場景
例如,Echarts樹形圖形
Java遞歸獲得TreeJson

注意,使用JSON轉換

{
    name: '根節點',
    pid: null,
    id: 0,
    children: [{
        name: '節點1',
        pid: 0,
        id: 1,
        children: [{
            name: '節點11',
            pid: 1,
            id: 11,
            children: []
        }, {
            name: '節點12',
            pid: 1,
            id: 12,
            children: []
        }, {
            name: '節點13',
            pid: 1,
            id: 13,
            children: []
        }]
    }, {
        name: '節點2',
        pid: 0,
        id: 2,
        children: []
    }, {
        name: '節點3',
        pid: 0,
        id: 3,
        children: []
    }]
};

以上,拷貝本地運行,任意應用。

向AI問一下細節

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

AI

隆安县| 江陵县| 龙泉市| 阿拉尔市| 胶州市| 淳化县| 北川| 襄垣县| 阿拉善左旗| 建湖县| 古田县| 松江区| 阿荣旗| 天祝| 井冈山市| 兴安盟| 星座| 望谟县| 宝清县| 静乐县| 同德县| 分宜县| 天水市| 乐至县| 东乌珠穆沁旗| 阿图什市| 玉田县| 安国市| 大竹县| 周宁县| 无棣县| 汶上县| 沅江市| 兖州市| 奉节县| 宣汉县| 马尔康县| 清新县| 泗水县| 明溪县| 海城市|