java 菜单递归_java构建树形菜单递归工具类

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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值