一般页面菜单资源展示像树一样,可以用递归算法去获取菜单资源示例如下:
package Thread;
import BO.TreeBO;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class test {
static Logger log = LogManager.getLogger(test.class.getName());
public static void main(String[] args) {
//从菜单资源表中取出菜单数据 用id排序 一般
List<TreeBO> list = new ArrayList<>();
//造数
list.add(new TreeBO("1", "0"));
list.add(new TreeBO("2", "1"));
list.add(new TreeBO("3", "1"));
list.add(new TreeBO("4", "3"));
list.add(new TreeBO("5", "3"));
list.add(new TreeBO("6", "2"));
list.add(new TreeBO("7", "2"));
list.add(new TreeBO("8", "6"));
list.add(new TreeBO("9", "7"));
//递归组织成菜单树,根节点一般为
List<TreeBO> digui = digui(list, "0");
System.out.println(digui.toString());
}
/**
* 递归取菜单树
*/
private static List<TreeBO> digui(List<TreeBO> list, String parentId) {
//获取本层级的 菜单
List<TreeBO> newList = new ArrayList<>();
TreeBO treeNode;
Iterator<TreeBO> iterator = list.iterator();
while (iterator.hasNext()) {
treeNode = iterator.next();
if (parentId.equals(treeNode.getParetnId())) {
newList.add(treeNode);
iterator.remove();
}
}
iterator = newList.iterator();
//根据本层级菜单取下一层及菜单
while (iterator.hasNext()) {
treeNode = iterator.next();
//本层级菜单id为下一层及菜单的父级id
treeNode.setTreeBOList(digui(list, treeNode.getId()));
}
return newList;
}
}