MenuTreeUtil菜单树形递归工具类
Posted cwshuo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MenuTreeUtil菜单树形递归工具类相关的知识,希望对你有一定的参考价值。
import com.aaa.controller.vm.MenuVM;
import com.aaa.entity.Menu;
import java.util.ArrayList;
import java.util.List;
/**
* 组装菜单树工具类
* Created by cws
* @author Administrator
*/
public class MenuTreeUtil {
public static MenuVM getTree(List<Menu> list) {
//判断是否有获取到数据
if (list == null || list.size() < 1) {
return null;
}
return buildTree(getRoot(list), list);
}
private static MenuVM buildTree(MenuVM pnode, List<Menu> nodes) {
List<MenuVM> childs = new ArrayList<>();
for (Menu tmp : nodes) {
if (pnode.getId().equals(tmp.getParentId())) {
childs.add(new MenuVM(tmp));
}
}
//二次递归遍历子节点
if (childs.size() > 0) {
pnode.setSubMenu(childs);
for (MenuVM ptmp : childs) {
buildTree(ptmp, nodes);
}
}
return pnode;
}
/**
* 获取一级目录
*
* @param list
*/
private static MenuVM getRoot(List<Menu> list) {
for (Menu po : list) {
if ("#".equals(po.getParentId())) {
return new MenuVM(po);
}
}
return null;
}
/**
* @param list
*/
public static List<MenuVM> getMenu(List<Menu> list) {
//判断是否有获取到数据
if (list == null || list.size() < 1) {
return null;
}
return getTree(list) == null ? null : getTree(list).getSubMenu();
}
}
以上是关于MenuTreeUtil菜单树形递归工具类的主要内容,如果未能解决你的问题,请参考以下文章
MySQL查询父节点下面的所有子孙节点,查询用户列表时多级(公司)部门处理,根据反射,递归树形结构工具类
MySQL查询父节点下面的所有子孙节点,查询用户列表时多级(公司)部门处理,根据反射,递归树形结构工具类