树结构转List

2023-11-09

 使用LinkedList效率更高

 1、单个顶级节点

public static List<CmsStudentOutline> getTreeList(CmsStudentOutline root) {

        List<CmsStudentOutline> list = new ArrayList<>();
        Queue<CmsStudentOutline> queue = new LinkedList<>();

        if (root == null) {
            return null;
        }
        root.setPid("0");
        //使用UUID也可以 root.setId(UUID.randomUUID().toString());
        root.setId(IdUtils.simpleUUID());
        queue.offer(root);//添加一个元素并返回true如果队列已满,则返回false
        while (!queue.isEmpty()) {
            CmsStudentOutline tree = queue.poll();//移除并返问队列头部的元素,如果队列为空,则返回null
            String pid = tree.getId();
            List<CmsStudentOutline> children = tree.getChildren();
            if (children != null) {
                for (CmsStudentOutline child : children) {
                    child.setPid(pid);
                    //使用UUID也可以 child.setId(UUID.randomUUID().toString());
                    child.setId(IdUtils.simpleUUID());
                    queue.offer(child);//添加一个元素并返回true,如果队列已满,则返回false
                }
            }
            CmsStudentOutline cmsStudentOutline = new CmsStudentOutline();
            cmsStudentOutline.setId(tree.getId());
            cmsStudentOutline.setPid(tree.getPid());
            cmsStudentOutline.setName(tree.getName());
            list.add(cmsStudentOutline);
        }
        return list;
    }

2、如果有多个顶级节点(循环即可)

public List<CmsStudentOutline> getList(List<CmsStudentOutline> cmsStudentOutline)
    {
        List<CmsStudentOutline> list = new ArrayList<>();
        for (CmsStudentOutline studentOutline : cmsStudentOutline) {
            list.addAll(breadthFirstTree2List(studentOutline));
        }
        return list;
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树结构转List 的相关文章

随机推荐

  • localStorage在Safari浏览器无痕模式下失效

    Safari无痕模式是不能使用localStorage的 可以利用这个特性判断用户是否开启无痕模式 并提醒用户关闭无痕模式 if typeof localStorage object try localStorage setItem loc
  • 学习笔记 JavaScript ES6 异步编程Promise

    Promise ES里面对异步操作的第一种方案 学习Promise 让异常操作变得优雅 Promise的精髓在于异步操作的状态管理 一个Promise最基本用法 他的参数是一个方法 这个方法里有两个参数 一个是异步操作执行成功的回调 一个是
  • DC综合脚本中文详细解释

    script for Design Compiler DC综合编译脚本 language TCL 语言说明 Usage 使用说明 1 make sure the lib in the current directory 确保设计库在正确的文
  • Xcode项目设置项中的LLVM

    LLVM是构架编译器
  • html5开发手机打电话发短信功能,html5的高级开发,html5开发大全,html手机电话短信功能详解

    原文地址 http blog csdn net xmtblog article details 32931905 在很多的手机网站上 有打电话和发短信的功能 对于这些功能是如何实现的呢 其实不难 今天我们就用html5来实现他们 简单的让你
  • Angular--官方文档之 Angular CLI

    学习Angular官方文档的时候 参考https angular cn guide quickstart 这个快速开发的文档 对于我这个AngularJs小白在看了Angular菜鸟教程后 只能说可以简单的运用一下 看到一些专业术语 我也是
  • 嵌入式Linux(四)—嵌入式C语言(杂项/数据类型关键字)

    目录 杂项关键字 sizeof Return 数据类型关键字 char 进制 int long short Unsigned signed Float double void 自定义数据类型 Struct Union enum typede
  • cppcheck使用

    cppcheck使用 cppcheck说明 cppcheck能够检查出来的问题 cppcheck使用并生成html结果 生成html结果 cppcheck说明 cppcheck主要用来检查c c 代码的 本文主要讲述cppcheck用命令行
  • Flutter 开发小结

    接触 Flutter 已经有一阵子了 期间记录了很多开发小问题 苦于忙碌没时间整理 最近项目进度步上正轨 借此机会抽出点时间来统一记录这些问题 并分享项目开发中的一点心得以及多平台打包的一些注意事项 希望能对大家有所帮助 UI 组件使用 官
  • Linux 下使用Crontab定时任务同时执行多条定时任务

    Linux 下使用Crontab定时任务同时执行多条定时任务 使用 符连接即可 示例如下 0 6 bea ceos timer bin pb ClosePbManifestTimer sh gt dev null 2 gt 1 bea ce
  • 【高项】质量管理(ITTO)

    过程组 子过程 输入 I 工具和技术 TT 输出 O 规划 1规划质量管理 1 项目章程 2 项目管理计划 需求管理计划 风险管理计划 相关方参与计划 范围基准 3 项目文件 假设日志 需求文件 需求跟踪矩阵 风险登记册 相关方登记册 4
  • QT源码剖析-QT对象通信机制信号槽的绑定具体实现

    本文详细介绍QT核心机制之一 信号和槽 我们在此根据Qt源代码一步一步探究其信号槽的实现过程 核心知识点 模板元编程技术 Qt moc预编译机制 QObject类 目录 1 QObject类介绍 2 相关助手类介绍 2 1 类型 函数指针
  • pip安装出现Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: '

    问题描述 pip安装库或者更新pip版本时出现如下问题 Could not install packages due to an EnvironmentError Errno 2 No such file or directory c us
  • LeetCode 面试题01.09 字符串轮转

    题目 字符串轮转 给定两个字符串s1和s2 请编写代码检查s2是否为s1旋转而成 比如 waterbottle 是 erbottlewat 旋转后的字符串 示例1 输入 s1 waterbottle s2 erbottlewat 输出 Tr
  • 一个独特的开源插件evil.js

    前言 最近发现一个好玩有解压的开源插件 注意 不可使用在正式项目中 这里分享下 gitee地址 evil js 此代码仅在周日的时候执行以下逻辑 声明 请勿用于任何项目 如果导致任何问题 与本人无关https gitee com haoxi
  • 矩阵LU分解

    一 矩阵LU分解定理 设A为n阶矩阵 如果A的顺序主子式Di 0 i 1 2 n 1 则A可以分解为一个单位下三角矩阵L和一个上三角矩阵U的乘积 且这种分解是唯一的 即A LU 二 矩阵LU分解Python代码 自己原创 def lu de
  • 第十二章 - 条件判断(case when 和 if)和视图

    第十二章 条件判断 case when 和 if 和视图 view if 的用法 case when 的用法 视图 view 的用法 if 的用法 通过使用if函数可以实现数据二分类或者多分类的功能 比如按年龄区分青年 中年 老年 或者按价
  • Python2_Pandas库(数据读取)

    1 数据读取 food info csv数据 import pandas food info pandas read csv food info csv read csv函数读取csv数据文件 print type food info Da
  • 汇编笔记——判断大小

    判断指令 CMP AL num 判断条件 这里的JA JB JE JMP相当于goto命令 JA L0 A gt above AL比num大 执行L0 JB L1 B gt below AL比num小 执行L1 JE L2 E gt equ
  • 树结构转List

    使用LinkedList效率更高 1 单个顶级节点 public static List