1.设计菜单实体
importjava.util.List;public classMenu {//菜单id
privateLong id;//父节点id
privateLong parentId;//菜单名称
privateString name;//对应路径
privateString url;//图标
privateString icon;//是否选中
private booleanselected;private List
}public voidsetId(Long id) {this.id =id;
}publicLong getParentId() {returnparentId;
}public voidsetParentId(Long parentId) {this.parentId =parentId;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}publicString getUrl() {returnurl;
}public voidsetUrl(String url) {this.url =url;
}publicString getIcon() {returnicon;
}public voidsetIcon(String icon) {this.icon =icon;
}public booleanisSelected() {returnselected;
}public void setSelected(booleanselected) {this.selected =selected;
}public List
}public void setChildrens(List
}
}
2.工具类如下:
importjava.util.ArrayList;importjava.util.List;importcom.alibaba.fastjson.JSONObject;/*** 构建树形菜单
* MenuUtils
*@authorlishang
* 2018年8月30日*/
public classMenuUtils {/*** 针对二级菜单
* treeMenuList:( ).
*@authorlishang
*@paramsourceList
*@return
*/
public static List
List
}
List
pmenus.add(menu);
}
}
sourceList.removeAll(pmenus);for (int i = 0; i < pmenus.size(); i++) {
Menu pmenu=pmenus.get(i);
List
cmenus.add(menu);
}
}
pmenu.setChildrens(cmenus);
sourceList.removeAll(cmenus);
}returntargetList;
}public static List
}/*** 递归获取菜单
* treeRoot:( ).
*@authorlishang
*@paramsourceList
*@paramrootMenu
*@return
*/
public static Menu treeRoot(List
{if (sourceList == null)
{return null;
}
List
Menu menuChild=treeRoot(sourceList, menu);
childList.add(menuChild);
}
}if(childList.size()==0){returnrootMenu;
}
rootMenu.setChildrens(childList);returnrootMenu;
}public static voidmain(String[] args) {
List
Menu menu=newMenu();
menu.setParentId(0l);
menu.setId(1l);
menu.setName("菜单一级");
sourceList.add(menu);
Menu menu2=newMenu();
menu2.setParentId(1l);
menu2.setId(2l);
menu2.setName("菜单二级1");
sourceList.add(menu2);
Menu menu3=newMenu();
menu3.setParentId(2l);
menu3.setId(3l);
menu3.setName("菜单三级");
sourceList.add(menu3);
Menu menu4=newMenu();
menu4.setParentId(3l);
menu4.setId(4l);
menu4.setName("菜单四级");
sourceList.add(menu4);
Menu menu5=newMenu();
menu5.setParentId(1l);
menu5.setId(6l);
menu5.setName("菜单二级2");
sourceList.add(menu5);
Menu childrens=treeRoot(sourceList, menu);
System.out.println(JSONObject.toJSON(childrens));
}
}
import java.util.List;
public class Menu {
//菜单id
private Long id;
//父节点id
private Long parentId;
//菜单名称
private String name;
//对应路径
private String url;
//图标
private String icon;
//是否选中
private boolean selected;
private List
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
public List
return childrens;
}
public void setChildrens(List
this.childrens = childrens;
}
}