Java生成树形结构数据

public class Menu {
    private Integer menuId;
    private String menuName;
    private Integer parentId;
    private Integer sort;

    public Integer getMenuId() {
        return menuId;
    }

    public void setMenuId(Integer menuId) {
        this.menuId = menuId;
    }

    public String getMenuName() {
        return menuName;
    }

    public void setMenuName(String menuName) {
        this.menuName = menuName;
    }

    public Integer getParentId() {
        return parentId;
    }

    public void setParentId(Integer parentId) {
        this.parentId = parentId;
    }

    public Integer getSort() {
        return sort;
    }

    public void setSort(Integer sort) {
        this.sort = sort;
    }

    public Menu() {
    }

    public Menu(Integer menuId, String menuName, Integer parentId, Integer sort) {
        this.menuId = menuId;
        this.menuName = menuName;
        this.parentId = parentId;
        this.sort = sort;
    }
}

树形结构bean

public class TreeData {
    private Integer id;
    private String name;
    private Integer pid;
    private List<TreeData> children = new ArrayList<TreeData>();

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public Integer getPid() {
        return pid;
    }

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

    public List<TreeData> getChildren() {
        return children;
    }

    public void setChildren(List<TreeData> children) {
        this.children = children;
    }

    public TreeData() {
    }

    public TreeData(Integer id, String name, Integer pid) {
        this.id = id;
        this.name = name;
        this.pid = pid;
    }
}
import com.google.gson.Gson;
import com.zns.project1.bean.Menu;
import com.zns.project1.bean.TreeData;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

public class Test {
    public static void main(String[] args) {
        Gson gson = new Gson();
        List<Menu> list = getMenuList();
        List<TreeData> treeDataList = getTreeList(list, 0);
        System.out.println(gson.toJson(treeDataList));
    }

    //构造数据
    public static List<Menu> getMenuList() {
        List<Menu> list = new ArrayList();
        list.add(new Menu(1, "a", 0, 1));
        list.add(new Menu(2, "a.1", 1, 1));
        list.add(new Menu(3, "a.1.1", 2, 1));
        list.add(new Menu(4, "b", 0, 2));
        list.add(new Menu(5, "b.1", 4, 2));
        list.add(new Menu(6, "b.2", 4, 1));
        return list;
    }

    public static List<TreeData> getTreeList(List<Menu> list, int parentId) {
        List<TreeData> treeList = new ArrayList<>();
        List<Menu> childList = list.stream().filter(i -> i.getParentId().equals(parentId)).sorted(Comparator.comparing(Menu::getSort)).collect(Collectors.toList());
        for (Menu item : childList) {
            TreeData m = new TreeData();
            m.setId(item.getMenuId());
            m.setName(item.getMenuName());
            m.setPid(item.getParentId());
            m.setChildren(getTreeList(list, item.getMenuId()));
            treeList.add(m);
        }
        return treeList;
    }
}

返回格式结果

[{
    "id": 1,
    "name": "a",
    "pid": 0,
    "children": [{
        "id": 2,
        "name": "a.1",
        "pid": 1,
        "children": [{
            "id": 3,
            "name": "a.1.1",
            "pid": 2,
            "children": []
        }]
    }]
}, {
    "id": 4,
    "name": "b",
    "pid": 0,
    "children": [{
        "id": 6,
        "name": "b.2",
        "pid": 4,
        "children": []
    }, {
        "id": 5,
        "name": "b.1",
        "pid": 4,
        "children": []
    }]
}]

猜你喜欢

转载自www.cnblogs.com/zengnansheng/p/11268511.html
今日推荐