Java 使用递归构建树
public class MenuTree1 { /** * 构建结束的树 */ private static List<Menu> menuList ; /** * 构建树 * @param menuId 树的根节点id 0:代表顶级节点 * @param nodeList 要构建的数据 * @return */ public static List<Menu> tree3(Integer menuId, List<MyMenu> nodeList){ menuList = new ArrayList<Menu>(); Menu menu1=new Menu(); menu1.setMenuId(menuId); getNode3(menu1,nodeList); return menuList; } /** * 使用递归构建树 * @param menu1 * @param nodeList */ public static void getNode3(Menu menu1, List<MyMenu> nodeList){ Integer menuId =menu1.getMenuId(); for (MyMenu layer : nodeList) { if(menuId.toString().equals(layer.getParentId().toString())){ Integer menuId1=layer.getMenuId(); Menu menu=new Menu(); menu.setMenuId(menuId1); menu.setMenuName(layer.getMenuName()); menu.setParentId(layer.getParentId()); if (menuId.toString().equals("0")){ menuList.add(menu); }else { menu1.getChildren().add(menu); } getNode3(menu,nodeList); } } } } @Data public class MyMenu extends BaseEntity{ private static final long serialVersionUID = -6525908145032868815L; @TableId private Integer menuId; private Integer parentId; private String menuName; private String icon; private Integer type; private String url; private String permission; private Integer sort; } @Data public class Menu { private List<Menu> children=new ArrayList<>(); private Integer parentId; private Integer menuId; private String menuName; private Integer value; private String label; }
本文来自博客园,作者:格,转载请注明原文链接:https://www.cnblogs.com/yuangyuan/p/16451367.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通