实体类
package com.study.entity;
import java.util.List;
import java.util.Objects;
public class Menu {
private Long id;
private String pName;
private Long pid;
private Integer level;
private List<Menu> kids;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Menu menu = (Menu) o;
return Objects.equals(id, menu.id) &&
Objects.equals(pName, menu.pName) &&
Objects.equals(pid, menu.pid) &&
Objects.equals(level, menu.level) &&
Objects.equals(kids, menu.kids);
}
@Override
public int hashCode() {
return Objects.hash(id, pName, pid, level, kids);
}
@Override
public String toString() {
return "Menu{" +
"id=" + id +
", pName='" + pName + '\'' +
", pid=" + pid +
", level=" + level +
", kids=" + kids +
'}';
}
public Menu() {
}
public List<Menu> getKids() {
return kids;
}
public void setKids(List<Menu> kids) {
this.kids = kids;
}
public Menu(long id, String pName, long pid, int level) {
this.id = id;
this.pName = pName;
this.pid = pid;
this.level = level;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getpName() {
return pName;
}
public void setpName(String pName) {
this.pName = pName;
}
public Long getPid() {
return pid;
}
public void setPid(Long pid) {
this.pid = pid;
}
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
}
工具类
package com.study.entity;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class MenuTree {
private List<Menu> menuList = new ArrayList<Menu>();
public MenuTree(List<Menu> menuList) {
this.menuList = menuList;
}
public static List<Menu> listToTree(List<Menu> list) {
List<Menu> treeList = new ArrayList<Menu>();
for (Menu tree : list) {
System.out.println(tree);
if (tree.getPid() == null ) {
treeList.add(findChildren(tree, list));
}
}
return treeList;
}
private static Menu findChildren(Menu tree, List<Menu> list) {
for (Menu node : list) {
if (node.getPid().longValue() == tree.getId().longValue()) {
if (tree.getKids() == null) {
tree.setKids(new ArrayList<Menu>());
}
tree.getKids().add(findChildren(node, list));
}
}
return tree;
}
}
运行
package com.study.demo01;
import com.study.entity.Menu;
import com.study.entity.MenuTree;
import com.alibaba.fastjson.JSON;
import java.util.ArrayList;
import java.util.List;
public class Java {
public static void main(String[] args) {
List<Menu> menuList = new ArrayList<Menu>();
menuList.add(new Menu( 1,"assd",-1,0));
menuList.add(new Menu(2,"as",1,1));
menuList.add(new Menu(3,"asd",2,2));
menuList.add(new Menu( 4,"Asfd",-1,0));
menuList.add(new Menu(5,"asd",4,1));
List<Menu> menus = MenuTree.listToTree(menuList);
String jsonOutput = JSON.toJSONString(menus);
System.out.println(jsonOutput);
}
}