当前位置: 首页 > news >正文

自定义树形构造器

叶子节点

import java.util.List;/*** TODO** @author libinWang* @className TreeNode* @date 2025/8/25*/
public interface TreeNode<K> {K getId();K getParentId();List<? extends TreeNode<K>> getChildren();void setChildren(List<? extends TreeNode<K>> children);}

构造器


import java.util.*;public class TreeBuilder {/*** 通用树形结构构建方法(适用于实现了TreeNode接口的类)* @param list 原始数据列表* @param <T> 节点类型* @param <K> ID类型* @return 树形结构列表*/public static <T extends TreeNode<K>, K> List<T> buildTree(List<T> list) {if (list == null || list.isEmpty()) {return Collections.emptyList();}Map<K, T> map = new HashMap<>();for (T item : list) {map.put(item.getId(), item);}List<T> roots = new ArrayList<>();for (T item : list) {T parent = map.get(item.getParentId());if (parent == null) {roots.add(item);} else {List<T> children = (List<T>) parent.getChildren();if (children == null) {children = new ArrayList<>();parent.setChildren(children);}children.add(item);}}return roots;}
}

使用

@Data
public class DeptVo implements TreeNode {/*** id*/@JsonSerialize(using = ToStringSerializer.class)private Long id;/*** 父级ID(指向本表id,根节点为NULL)*/private Long parentId;/*** 子集*/private List<DeptVo> deptVoList; @Overridepublic List<? extends TreeNode> getChildren() {return this.getDeptVoList();}@Overridepublic void setChildren(List children) {this.setDeptVoList(children);}
}
 List<PostVo> copys= TreeBuilder.buildTree(copys);

http://www.dtcms.com/a/350605.html

相关文章:

  • python项目实战 3D宠物狗
  • 关于传统的JavaWeb(Servlet+Mybatis)项目部署Tomcat后的跨域问题解决方案
  • MM-2025 | 北航双无人机协作助力视觉语言导航!AeroDuo:基于空中双机系统的无人机视觉语言导航
  • 简述mysql中索引类型有哪些,以及对数据库的性能的影响?
  • JBL音响代理——河北正娱科技的声学精品工程
  • 网络编程-HTTP
  • 插曲 - 为什么光速不变
  • 【代码】洛谷P3391 【模板】文艺平衡树(FHQ Treap)
  • 低质量视频变高清AI:告别模糊,重现清晰画质
  • chrome插件开发(二)
  • vue家教预约平台设计与实现(代码+数据库+LW)
  • 驱动-热插拔-Netlink广播监听内核状态
  • HarmonyOS实战(DevEco AI篇)—CodeGenie + DeepSeek构建鸿蒙开发的超级外挂工作流
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(十九)子窗口
  • 您的连接不是私密连接问题解决
  • 借Copilot之力,实现办公效率的跃升
  • 数据库原理及应用_数据库基础_第2章关系数据库标准语言SQL_索引和视图
  • 软件使用教程(二):VS Code的Copilot、Git设置与使用
  • 复制和下载飞书文档的方法教程
  • Unity开发如何实现换装技术
  • Ubuntu 14.10 i386桌面版安装教程(U盘启动详细步骤-附安装包下载)​
  • LeetCode 100题(3)(10题)
  • 实用电脑小工具分享,守护电脑隐私与提升效率21/64
  • CANopen - DCF(Device Configuration File) 介绍
  • 平安产险青海分公司助力国家电投黄河公司安全生产
  • 2024鸿蒙样题需要掌握的知识点
  • Shopify 集合页实现自定义广告位插入(支持分页)
  • C++ 指针与引用面试深度解析
  • k8s数据存储
  • PMP项目管理知识点-④ 项⽬整合管理