java树形结构递归查询
思路
先找到所有的根节点,再通过循环遍历所有的根节点,找到每个跟节点的子节点,最终形成一个树形结构
/** * 构建树形结构数据new * @param org * @return */ public list<orgentity> builtree(orgentity org){ list<orgentity> treemenus =new arraylist<>(); // 查询所有数据 list<orgentity> relist = this.querylistbyorg(org); // 获取根节点数据 list<orgentity> rootlist = this.getrootnode(relist); for(orgentity node : rootlist){ // 为根节点数据递归添加字点数据 node=buildchiltree(node,relist); treemenus.add(node); } return treemenus; }
/** * 获取根节点new * @param list * @return */ public list<orgentity> getrootnode(list<orgentity> list){ list<orgentity> rootmenulists =new arraylist // 遍历list,获取根节点数据 for(orgentity menunode : list) { boolean isexit = false; for(orgentity node : list){ if(menunode.getparentid() != null && menunode.getparentid().equals(node.getid())){ isexit = true; break; } } // 如果遍历该数据没有上级节点,就放到根节点list中,否则就不放 if(!isexit){ rootmenulists.add(menunode); } } return rootmenulists; }
//递归,建立子树形结构new public orgentity buildchiltree(orgentity pnode,list<orgentity> list){ list<orgentity> chilmenus =new arraylist<>(); for(orgentity menunode : list) { if(menunode.getparentid().equals(pnode.getid())) { chilmenus.add(buildchiltree(menunode,list)); } } pnode.setchildren(chilmenus); return pnode; }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论