实体类
public class Menulist {
private int id;
private String name;
private int pId;
private List<Menulist> menuChild = new ArrayList<Menulist>();
public List<Menulist> getMenuChild() {
return menuChild;
}
public void setMenuChild(List<Menulist> menuChild) {
this.menuChild = menuChild;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getpId() {
return pId;
}
public void setpId(int pId) {
this.pId = pId;
}
public Menulist(int id, String name, int pId, List<Menulist> menuChild) {
this.id = id;
this.name = name;
this.pId = pId;
this.menuChild = menuChild;
}
public Menulist() {
}
@Override
public String toString() {
return "Menulist{" +
"id=" + id +
", name='" + name + '\'' +
", pId=" + pId +
", menuChild=" + menuChild +
'}';
}
}
生成树形结构
public Menulist tree(List<Menu> menuAll,Menulist menulist){
List<Menulist> submenu = new ArrayList<>();
for (Menu menu:menuAll) {
int id = menu.getId();
Boolean node = node(id,1);
if (node==true){
menulist = leaf(menu);
}else {
Menulist menulist5 = new Menulist();
int pid = menu.getpId();
int menuId = menu.getId();
Boolean node1 = node(pid,1);
if (node1==true){
menulist5 = leaf(menu);
menulist5.setMenuChild(grandsonmenu(menuAll,menuId));
submenu.add(menulist5);
menulist.setMenuChild(submenu);
}
}
}
return menulist;
}
判断是否为子节点根节点
public Boolean node(int fid,int zid ){
if (fid==zid){return true;}else {
return false;
}
}
封装数据
public Menulist leaf(Menu menu){
Menulist menulist= new Menulist();
menulist.setId(menu.getId());
menulist.setpId(menu.getpId());
menulist.setName(menu.getName());
return menulist;
}
封装孙节点数据
public List<Menulist> grandsonmenu(List<Menu> menus,int menuId){
List<Menulist> menulist1 = new ArrayList<>();
for (Menu menu:menus) {
int id = menu.getId();
int pid = menu.getpId();
Boolean node = node(pid, menuId);
if (node==true){
menulist1.add(leaf(menu));
}
}
return menulist1;
}
调用生成
public String getMenuCombotree() throws Exception {
List<Menu> menuAll = menuService.getMenuAll();
Menulist menulist = new Menulist();
menulist = tree(menuAll, menulist);
return JSON.toJSONString(menulist);
}