java递归生成树型结构方式

 更新时间:2024年12月17日 16:41:57   作者:青艾_XY  
文章介绍了如何使用Java递归生成树形结构,包括获取数据、生成树形结构、查询子节点等步骤,作者分享了自己的经验,希望能对大家有所帮助

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.效果

总结以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mysql数据库忘记密码时如何修改

    mysql数据库忘记密码时如何修改

    本文主要介绍了mysql数据库忘记密码时如何修改的步骤方法,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 如何利用SpringAOP的返回通知处理数据加密返回

    如何利用SpringAOP的返回通知处理数据加密返回

    这篇文章主要介绍了如何利用SpringAOP的返回通知处理数据加密返回,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2024-12-12
  • 史上最简单的MyBatis动态SQL入门示例代码

    史上最简单的MyBatis动态SQL入门示例代码

    动态sql,可以根据用户对字段选择和输入,动态生成一条sql执行。接下来通过本文给大家分享MyBatis动态SQL入门示例代码,一起看看吧
    2017-03-03
  • SpringBoot整合DeepSeek实现AI对话功能

    SpringBoot整合DeepSeek实现AI对话功能

    本文介绍了如何在SpringBoot项目中整合DeepSeek API和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了人工智能模型的集成,感兴趣的小伙伴跟着小编一起来看看吧
    2025-02-02
  • Java JDK8新增Optional工具类讲解

    Java JDK8新增Optional工具类讲解

    这篇文章主要介绍了Java JDK8新增Optional工具类讲解,本文通过老版和jdk8对比对null的处理方式,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • SpringBoot2零基础到精通之数据库专项精讲

    SpringBoot2零基础到精通之数据库专项精讲

    SpringBoot是一种整合Spring技术栈的方式(或者说是框架),同时也是简化Spring的一种快速开发的脚手架,本篇我们来学习如何连接数据库进行操作
    2022-03-03
  • 详解Java类动态加载和热替换

    详解Java类动态加载和热替换

    本文主要介绍类加载器、自定义类加载器及类的加载和卸载等内容,并举例介绍了Java类的热替换。
    2021-05-05
  • java腾讯AI人脸对比对接代码实例

    java腾讯AI人脸对比对接代码实例

    这篇文章主要介绍了java腾讯AI人脸对比对接,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 使用VS Code进行java开发与调试的图文教程

    使用VS Code进行java开发与调试的图文教程

    这篇文章主要介绍了如何在计算机上安装JDK、VSCode以及Java扩展包,并详细说明了配置Java运行环境的过程,还展示了如何在VSCode中新建一个Java项目,需要的朋友可以参考下
    2025-02-02
  • java关于String.split("|")的使用方式

    java关于String.split("|")的使用方式

    这篇文章主要介绍了java关于String.split("|")的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02

最新评论