当前位置: 代码网 > it编程>编程语言>Java > Java树形结构递归查询方式

Java树形结构递归查询方式

2024年12月18日 Java 我要评论
java树形结构递归查询思路先找到所有的根节点,再通过循环遍历所有的根节点,找到每个跟节点的子节点,最终形成一个树形结构 /** * 构建树形结构数据new * @param o

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;
    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com