java递归生成树型结构

本文介绍了如何使用Java通过递归方法,从数据库数据中获取分类列表,并转换为树形结构,包括获取数据、生成树形结构以及查询子节点的过程,展示了在IT技术中处理分类数据的典型应用场景。
摘要由CSDN通过智能技术生成

java递归生成树

1.获取数据

public List<TreeClassifyRespVO> getTreeClassifyList(ClassifyPageReqVO reqVO) {
    List<ClassifyDO> classifyList = classifyMapper.selectList(reqVO);
    List<TreeClassifyRespVO> childClassifyResp = ClassifyConvert.INSTANCE.convertList01(classifyList);
    return getClassifyTree(childClassifyResp);
}

2.生成树形结构

public List<TreeClassifyRespVO> getClassifyTree(List<TreeClassifyRespVO> childClassifyResp) {
    // 返回的树形数据
    List<TreeClassifyRespVO> tree = new ArrayList<TreeClassifyRespVO>();
    // 第一次遍历
    for (TreeClassifyRespVO treeClassify : childClassifyResp) {
        // 找到根节点,这里我的根节点的pid为0
        if (treeClassify.getPid()==0) {
            tree.add(findChild(treeClassify, childClassifyResp));
        }
    }
    return tree;
}

3.查询子节点

private TreeClassifyRespVO findChild(TreeClassifyRespVO treeClassify, List<TreeClassifyRespVO> list) {
    // 定义list用于存储子节点
    List<TreeClassifyRespVO> children = new ArrayList<TreeClassifyRespVO>();
    for (TreeClassifyRespVO node : list) {
        // 找到根节点,这里我的根节点的pid为0
        if (node.getPid().equals(treeClassify.getId())) {
            // 调用递归
            children.add(findChild(node, list));
        }
    }
    treeClassify.setChildren(children);
    return treeClassify;
}

4.效果

在这里插入图片描述

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用递归方法实现将组织全路径转化为树结构。 假设我们有一个组织列表,每个组织都有一个全路径,例如:/公司/部门/小组。我们需要将这些组织转化为树结构,方便展示和操作。 首先,我们可以定义一个组织类,包含组织ID、名称、父级ID和子级组织列表: ```java public class Organization { private String id; private String name; private String parentId; private List<Organization> children; // getters and setters } ``` 接下来,我们可以编写一个递归方法,将组织列表转化为树结构: ```java public class OrganizationUtils { public static List<Organization> buildTree(List<Organization> organizations, String parentId) { List<Organization> tree = new ArrayList<>(); for (Organization organization : organizations) { if (parentId.equals(organization.getParentId())) { List<Organization> children = buildTree(organizations, organization.getId()); organization.setChildren(children); tree.add(organization); } } return tree; } } ``` 在递归方法中,我们首先定义一个空的树结构列表,然后遍历所有组织。如果当前组织的父级ID等于传入的父级ID,就将该组织添加到树结构列表中,并递归处理其子级组织。 最后,我们可以调用递归方法,生成树结构: ```java List<Organization> organizations = new ArrayList<>(); // add organizations to the list List<Organization> tree = OrganizationUtils.buildTree(organizations, "0"); ``` 其中,第二个参数是根组织的父级ID,通常为0或null。生成的树结构列表可以用于展示或操作组织结构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值