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": [] }] }]