实现文件目录结构功能

news/2025/1/13 7:25:19/文章来源:https://www.cnblogs.com/bigcat26/p/18520000

@

目录
  • 说明:该文章用于目录结构递进显示
  • Node
  • ConstructTree

说明:该文章用于目录结构递进显示

Node

package com.geespace.microservices.directory.assets.entity;import java.util.ArrayList;
import java.util.List;import lombok.Data;/*** @Author: wjq* @Date: 2021-03-14 13:46* @Version 1.0*/
@Data
public class Node {/*** 名称*/private String name;/*** id*/private Long id;/*** pid*/private Long pid;/*** 子目录*/private List<Node> children = new ArrayList();
}

ConstructTree

package com.geespace.microservices.directory.assets.util;import java.util.ArrayList;
import java.util.HashMap;import com.alibaba.fastjson.JSONObject;
import com.geespace.microservices.directory.assets.dto.DirectoryAssetsDto;
import com.geespace.microservices.directory.assets.entity.Node;import org.springframework.stereotype.Component;/*** @Author: wjq* @Date: 2021-03-12 16:39* @Version 1.0*/
@Component
public class ConstructTree {public static final int ROOTPID = -1;public static final int CAPACITY = 100;/*** constructLinks** @param directoryList directoryList* @return 结果*/public Node constructLinks(ArrayList<DirectoryAssetsDto> directoryList) {Long rootId = null;HashMap<Long, Node> nodeMap = new HashMap<>(CAPACITY);for (DirectoryAssetsDto directoryInfo:directoryList) {Node tempNode = new Node();tempNode.setId(directoryInfo.getId());tempNode.setName(directoryInfo.getName());tempNode.setPid(directoryInfo.getPid());nodeMap.put(directoryInfo.getId(), tempNode);if (directoryInfo.getPid() == ROOTPID) {rootId = directoryInfo.getId();}}for (Long key: nodeMap.keySet()) {Long pid = nodeMap.get(key).getPid();if (pid != ROOTPID) {nodeMap.get(pid).getChildren().add(nodeMap.get(key));}}Node root = nodeMap.get(rootId);return root;}/**** @param node node* @return json*/public JSONObject constructJS(Node node) {JSONObject jsonObject = new JSONObject();ArrayList<JSONObject> children = new ArrayList<>();for (Node child: node.getChildren()) {children.add(this.constructJS(child));}jsonObject.put("children", children);jsonObject.put("id", node.getId());jsonObject.put("name", node.getName());return jsonObject;}/**** @param data data* @return jason*/public JSONObject method(ArrayList<DirectoryAssetsDto> data) {Node root = this.constructLinks(data);return this.constructJS(root);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/825205.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

juicefs元数据存储方式

环境 文件系统使用juicefs,元数据存储使用postgresql,数据存储使用minio 问题? 通过juicefs写入一个文件,元数据在postgresql中是如何存储的?数据在minio中又是如何存储的? 使用docker部署完测试环境后,新建 file1、dir1/file1、dir1/file2三个文件 在postgresql中 jfs_…

有什么好的开源自动化测试框架可以推荐

根据“有什么好的开源自动化测试框架可以推荐”这个标题,1、Selenium,2、Appium,3、Robot Framework,4、JUnit。 对Selenium进行展开详细描述,在开源自动化测试工具领域,Selenium以其强大的功能和广泛的应用背景成为了多数开发者及测试人员的首选。Selenium不仅支持多种浏…

如何确定项目计划的关键绩效指标(KPI)

确定项目计划的关键绩效指标(KPI)应该以项目目标、过程优化与最终结果的可衡量性为依据。首先,明确项目目标是确定KPI的基础。根据目标,选择能够量化项目进程和成果的指标、保证KPI具有实时性和可操作性是确保效果的关键、并且需要确保KPI与组织的整体战略目标一致。例如,…

c#表达式树入门,看这个就够了

题记: 由于反射需要大量的性能开销,所以推荐用表达式树或者emit,但是emit 如果不熟悉指令编程的话,使用成本很大,所以优先推荐表达式树,但是网上给出来的文档 都非常的复杂,只是带你使用,刚好我团队的小伙伴也不太理解,所以我来整理一篇简单入门版本的.问: 反射有3种方式,一个是…

黑马PM-电商项目-电商后台

电商后台的核心作用及架构电商后台基础支撑

MEAS-Measurement: Sensors

Measurement: Sensors是一本开放获取期刊,对来自这个高度热门和多学科学科学科的所有相关领域的原创、高质量贡献开放。邀请提交关于科学、工程和技术的理论、研究、开发、制造和应用的各个方面的投稿,这些领域包括当今传感器和传感器系统。我们鼓励作者提交有关该领域的新材…

TI-Trends in Immunotherapy

Trends in Immunotherapy 是一本开放获取的同行评审期刊,涵盖与所有基于免疫系统的领域相关的各个学科。TI 的目标受众包括来自学术界、医疗行业、教育界等的科研人员、专业从业人员和医学学者。它提供了一个论坛来分享学术著作,以科学与医学相结合的方式推进免疫疗法。 发表…

为什么 C++ 编译速度比 Java 慢得多

### 为什么 C++ 编译速度比 Java 慢得多 在探讨为什么 C++ 编译速度比 Java 慢得多时,我们可以归纳出几个核心原因:C++的编译模型更为复杂、模板元编程、宏处理以及链接时间。其中,C++的编译模型更为复杂这一点尤为突出。C++需要处理的细节更多,如模板实例化、头文件的重复…

赠送天翼云电脑,解决一点园子的商业化烦恼

救园成功后,我们一边开启AI之旅,一边尝试做一些当前力所能及的商业化项目,增加园子的收入来源。 这个月开始尝试做一些天翼云电脑的代理业务,先给大家赠送一些天翼云电脑体验一下。 赠送方案:终身PLUS会员赠送1年4核8G云电脑(限1个名额) 终身会员赠送3个月4核8G云电脑(…

VR游戏和传统游戏在体验上有多大差异_1

​​虚拟现实(VR)游戏和传统视频游戏在玩家体验上呈现显著差异,这些差异主要体现在以下等方面:1.沉浸感和现实感;2.交互方式和控制;3.硬件需求和可访问性;4.游戏设计和内容;5.社交互动;6.身体参与和舒适度。VR游戏通过创新的技术提供了更为沉浸式的游戏体验,而传统游…

阿里云服务器的端口有什么用

阿里云服务器的端口在网络通信中起着重要的作用。大数据平台通常包括数据采集、数据存储、数据处理和数据分析等模块。这种平台的使阿里云服务器上的端口用于接收和发送网络数据包,以实现不同应用程序之间的通信。用,帮助企业从大数据中获取价值,提升业务效率,优化决策过程…

为什么别人的简历可以一击即中,你的就石沉大海?

很多小伙伴平均每天投20份简历,但是最终收获offer的比率却少的可怜。为什么别人的简历可以一击即中,你的就石沉大海?这年头找工作就像找对象一样——难! 很多小伙伴平均每天投20份简历,但是最终收获offer的比率却少的可怜。为什么别人的简历可以一击即中,你的就石沉大海?…