Java遞歸處理Tree樹結構


Java遞歸處理Tree樹結構

package cn.pconline;

import com.alibaba.fastjson.JSON;

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

/**
 * @Description Tree樹結構數據組裝
 * @Author jie.zhao
 * @Date 2019/12/27 15:10
 */
public class TestTree {

    public static void main(String[] args) {
        //假數據
        List<Map<String, Object>> dataList = new ArrayList<>();
        dataList.add(new HashMap<String, Object>() {{
            put("id", "1");
            put("pid", "");
            put("name", "公司根節點");
        }});
        dataList.add(new HashMap<String, Object>() {{
            put("id", "2");
            put("pid", "1");
            put("name", "部門1");
        }});
        dataList.add(new HashMap<String, Object>() {{
            put("id", "3");
            put("pid", "1");
            put("name", "部門2");
        }});
        dataList.add(new HashMap<String, Object>() {{
            put("id", "4");
            put("pid", "2");
            put("name", "部門1小組1");
        }});
        dataList.add(new HashMap<String, Object>() {{
            put("id", "5");
            put("pid", "3");
            put("name", "部門2小組1");
        }});

        //dataList為假數據,正常數據庫查詢所有數據。。。
        List<Map<String, Object>> treeList = doTreeList(dataList, "");
        System.out.println(JSON.toJSONString(treeList));
		//輸出
		/*
		[{"children":[{"children":[{"children":[],"name":"部門1小組1","pid":"2","id":"4"}],"name":"部門1","pid":"1","id":"2"},
		{"children":[{"children":[],"name":"部門2小組1","pid":"3","id":"5"}],
		"name":"部門2","pid":"1","id":"3"}],"name":"公司根節點","pid":"","id":"1"}]
		*/

    }

    //遞歸tree樹
    public static List<Map<String, Object>> doTreeList(List<Map<String, Object>> dataList, String pid) {
        List<Map<String, Object>> resultList = new ArrayList<>();
        if (dataList != null) {
            for (Map<String, Object> item : dataList) {
                if (pid.equals(item.get("pid").toString())) {
                    List<Map<String, Object>> children = doTreeList(dataList, item.get("id").toString());
                    item.put("children", children);
                    resultList.add(item);
                }
            }
        }
        return resultList;
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM