男女做特别污污的事情网站如何推广英文网站
web/
2025/10/2 22:52:52/
文章来源:
男女做特别污污的事情网站,如何推广英文网站,南川网站建设,html6java list集合转树结构#xff08;treeList#xff09; 我们在实际开发中#xff0c;肯定会用到树结构#xff0c;如部门树、菜单树等等。Java后端利用递归思路进行构建树形结构数据#xff0c;返回给前端#xff0c;能以下拉菜单等形式进行展示。今天#xff0c;咱们就…java list集合转树结构treeList 我们在实际开发中肯定会用到树结构如部门树、菜单树等等。Java后端利用递归思路进行构建树形结构数据返回给前端能以下拉菜单等形式进行展示。今天咱们就来说说怎么样将List集合转换成TreeList。一、简介 树是nn0个结点的有限集。当n 0时称为空树。在任意一棵非空树中应满足
有且仅有一个特定的称为根的结点。 当n1时其余节点可分为mm0个互不相交的有限集T1,T2,…,Tm其中每个集合本身又是一棵树并且称为根的子树。 显然树的定义是递归的即在树的定义中又用到了自身树是一种递归的数据结构。树作为一种逻辑结构同时也是一种分层结构具有以下两个特点 树的根结点没有前驱除根结点外的所有结点有且只有一个前驱。树中所有结点可以有零个或多个后继。因此n个结点的树中有n-1条边。二、代码实现 1.jar依赖 为了简化代码引入Lombok的Jar包可省略实体类set()、get()方法org.projectlombok lombok 1.16.12 2.树节点数据类
/*** TreeNode 树节点 定义每一个节点的信息即每一个节点对应一条数据信息*/
Data
public class TreeNode {/** 节点ID */private Integer id;/** 父节点ID顶级节点为0 */private Integer parentId;/** 节点名称 */private String label;/** 子节点 */private ListTreeNode children;public TreeNode(Integer id, Integer parentId, String label) {this.id id;this.parentId parentId;this.label label;}
}3.构建树形类
理解思路
1、首先获取所有的根节点顶级节点即根节点的parentId 0。
2、根据每一个根节点与所有节点集合数据进行判断当前节点是否为其下的子节点。
3、若是则递归调用构建树形若不是则表明该节点不属于其下子节点。
4、应继续循环判断节点父子关系直到所有节点与根节点判断完毕。
/*** BuildTree 构建树形结构*/
public class TreeBuild {// 保存参与构建树形的所有数据通常数据库查询结果public ListTreeNode nodeList new ArrayList();/*** 构造方法* param nodeList 将数据集合赋值给nodeList即所有数据作为所有节点。*/public TreeBuild(ListTreeNode nodeList){this.nodeList nodeList;}/*** 获取需构建的所有根节点顶级节点 0* return 所有根节点List集合*/public ListTreeNode getRootNode(){// 保存所有根节点所有根节点的数据ListTreeNode rootNodeList new ArrayList();// treeNode查询出的每一条数据节点for (TreeNode treeNode : nodeList){// 判断当前节点是否为根节点此处注意若parentId类型是String则要采用equals()方法判断。if (0 treeNode.getParentId()) {// 是添加rootNodeList.add(treeNode);}}return rootNodeList;}/*** 根据每一个顶级节点根节点进行构建树形结构* return 构建整棵树*/
public ListTreeNode buildTree(){// treeNodes保存一个顶级节点所构建出来的完整树形ListTreeNode treeNodes new ArrayListTreeNode();// getRootNode()获取所有的根节点for (TreeNode treeRootNode : getRootNode()) {// 将顶级节点进行构建子树treeRootNode buildChildTree(treeRootNode);// 完成一个顶级节点所构建的树形增加进来treeNodes.add(treeRootNode);}return treeNodes;
}/*** 递归-----构建子树形结构* param pNode 根节点顶级节点* return 整棵树*/
public TreeNode buildChildTree(TreeNode pNode){ListTreeNode childTree new ArrayListTreeNode();// nodeList所有节点集合所有数据for (TreeNode treeNode : nodeList) {// 判断当前节点的父节点ID是否等于根节点的ID即当前节点为其下的子节点if (treeNode.getParentId().equals(pNode.getId())) {// 再递归进行判断当前节点的情况调用自身方法childTree.add(buildChildTree(treeNode));}}// for循环结束即节点下没有任何节点树形构建结束设置树结果pNode.setChildren(childTree);return pNode;
}} 三、测试案例 /** TreeController 树控制层 方式传递所有数据集合作为参数调用buildTree()构建树形。 */ RestController RequestMapping(“/tree”) public class TreeController { GetMapping(“/treeTest”) public AjaxResult treeTest(){ // 模拟测试数据通常为数据库的查询结果
ListTreeNode treeNodeList new ArrayList();
treeNodeList.add(new TreeNode(1,0,顶级节点A));
treeNodeList.add(new TreeNode(2,0,顶级节点B));
treeNodeList.add(new TreeNode(3,1,父节点是A));
treeNodeList.add(new TreeNode(4,2,父节点是B));
treeNodeList.add(new TreeNode(5,2,父节点是B));
treeNodeList.add(new TreeNode(6,3,父节点的ID是3));// 创建树形结构数据集合作为参数
TreeBuild treeBuild new TreeBuild(treeNodeList);
// 原查询结果转换树形结构
treeNodeList treeBuild.buildTree();
// AjaxResult个人封装返回的结果体
return AjaxResult.success(测试数据,treeNodeList);} } 最终的测试结果json
{msg”“ 测试数据”code: 200,data: [{id: 1,parentId: 0,label顶级节点A,children: [{id: 3,parentId: 1,label“ 父节点是Achildren: [id: 6,parentId: 3,label“ 父节点的ID是3}]}]}, {id: 2,parentId: 0,labe1“ 顶级节点B,children: [{id: 4,parentId: 2,label“ 父节点是B},{id: 5,parentId: 2,label 父节点是B}]}
]
}本文介绍的是通过Java代码将list集合转为树形结构数据如有不对可以或更好的方案欢迎指出和讨论。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85872.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!