逻辑
首先遍历目录集合找出getParentId=-1的根目录,然后遍历父目录,设置子目录。
获取子目录的这个方法时递归方法:遍历所有目录的getParentId与当前父目录id对比,一致则为该目录的子目录,放入subMenus。等到一层子目录归纳完成后,再遍历subMenus对新的子目录执行递归调用。
递归条件
如果存在子目录,就再按上面的逻辑查询子目录下的子目录;如果没有子目录了,就返回。
public static List<CusMenu> builderTree(List<CusMenu> cusMenus) throws ControllerException {
try {
List<CusMenu> menus = new ArrayList<CusMenu>();
for (CusMenu cusMenu : cusMenus) {
if (StringUtils.equals("-1", cusMenu.getParentId())) {
menus.add(cusMenu);
}
}
for (CusMenu cusMenu : menus) {
cusMenu.setSubMenus(getSubMenu(cusMenu.getId(),cusMenus));
}
return menus;
} c