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;
}
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论