public class BaseTree <T extends BaseTree>{ protected String parentId; protected String id; protected List<T> children; }
public class Recursion<T extends BaseTree>{ private List<T> BaseTreeList = new ArrayList<>(); /** * 建立树形结构 * 遍历root,为root(递归)添加下一级的节点 * @return */ public List<T> builBaseTree(){ List<T> BaseTreeMenus =new ArrayList<>(); for(T menuNode : getRootNode()) { menuNode=buildChilBaseTree(menuNode); BaseTreeMenus.add(menuNode); } return BaseTreeMenus; } //递归,建立子树形结构 private T buildChilBaseTree(T pNode){ List<T> chilMenus =new ArrayList<>(); for(T menuNode : BaseTreeList) { if(menuNode.getParentId().equals(pNode.getId())) { chilMenus.add(buildChilBaseTree(menuNode)); } } pNode.setChildren(chilMenus); return pNode; } /** * 获取树形的根节点 -- 数据库约定root的父节点是 0 * @return */ private List<T> getRootNode() { List<T> rootBaseTreeLists =new ArrayList<>(); for(T menuNode : BaseTreeList) { if(menuNode.getParentId().equals(Constant.ROOTTREEPARENT)) { rootBaseTreeLists.add(menuNode); } } return rootBaseTreeLists; } }