java 遞歸生成樹形結構

package com.lsn.ams;

import com.alibaba.fastjson.JSONArray;
import java.util.*;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class Test {


    public static void main(String[] args) {
        List<Tree> data = new ArrayList<Tree>();

        Tree tree = new Tree();
        tree.setId("1");
        tree.setPid("0");
        tree.setName("系統管理");

        data.add(tree);

        tree = new Tree();

        tree.setId("2");
        tree.setPid("1");
        tree.setName("管理員列表");
        data.add(tree);

        tree = new Tree();
        tree.setId("3");
        tree.setPid("2");
        tree.setName("新增管理員");
        data.add(tree);

        tree = new Tree();
        tree.setPid("0");
        tree.setId("4");
        tree.setName("導覽管理");
        data.add(tree);

        tree = new Tree();
        tree.setId("5");
        tree.setPid("4");
        tree.setName("POI管理");
        data.add(tree);


        MenuTree menuTree = new MenuTree();
        List<Object> list = menuTree.menuList(data);

        System.out.println(JSONArray.toJSON(list));

    }


}


/**
 *
 * 遞歸類
 */
class MenuTree {

    public static Map<String, Object> mapArray = new LinkedHashMap<String, Object>();
    public List<Tree> menuCommon;
    public List<Object> list = new ArrayList<Object>();

    public List<Object> menuList(List<Tree> menu) {

        this.menuCommon = menu;
        for (Tree x : menu) {

            Map<String, Object> mapArr = new LinkedHashMap<String, Object>();
            if (x.getPid() == "0") {
                mapArr.put("id", x.getId());
                mapArr.put("name", x.getName());
                mapArr.put("pid", x.getPid());
                mapArr.put("childList", menuChild(x.getId()));
                list.add(mapArr);
            }
        }


        return list;
    }

    public List<?> menuChild(String id) {
        List<Object> lists = new ArrayList<Object>();
        for (Tree a : menuCommon) {
            Map<String, Object> childArray = new LinkedHashMap<String, Object>();
            if (a.getPid() == id) {
                childArray.put("id", a.getId());
                childArray.put("name", a.getName());
                childArray.put("pid", a.getPid());
                childArray.put("childList", menuChild(a.getId()));
                lists.add(childArray);
            }
        }

        return lists;
    }

}

/**
 * 樹實體類
 */
class Tree {

    private String id;
    private String pid;
    private String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPid() {
        return pid;
    }

    public void setPid(String pId) {
        this.pid = pId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Tree [id=" + id + ", pid=" + pid + ", name=" + name + "]";
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章