js list转jsonArray(TreeUtils工具类一行代码实现列表转树 实战Java8 三级菜单 三级分类 附视频)
一 、序言
在日常一线开发过程中 ,总有列表转树的需求 ,几乎是项目的标配 ,比方说做多级菜单 、多级目录、多级分类等 ,有没有一种通用且跨项目的解决方式呢?帮助广大技术朋友给业务瘦身 ,提高开发效率 。
本文将基于Java8的Lambda 表达式和Stream等知识 ,使用TreeUtils工具类实现一行代码完成列表转树这一通用型需求 。本文有配套视频 ,传送门直达 。
二 、实战编码
1 、引入坐标本坐标地址包含TreeUtils工具类方法 ,已经发布到Maven中央仓库 ,建议使用最新的版本号,本文法布施版本是1.5.8 。
学习源码的朋友 ,源码直通车
<dependency> <groupId>xin.altitude.cms</groupId> <artifactId>ucode-cms-common</artifactId> <version>1.5.8</version> </dependency> 2 、实现接口列表实体类实现ITreeEntity并实现抽象方法 。
/** * 类别表 */ @Data @NoArgsConstructor @AllArgsConstructor @TableName(value = "bu_category") public class Category implements ITreeEntity<String> { private static final long serialVersionUID = 1L; @TableId(type = IdType.AUTO) private String id; private String name; private String parentId; } 3 、调用TreeUtils工具类在服务层调用TreeUtils工具类 ,一行代码完成转换 。
public List<TreeNode<String>> selectCategoryList2() { List<Category> list = this.list(); // 一行代码实现列表转树结构 通用型代码 能够跨项目使用 业务解藕 return TreeUtils.createNode(list, "000000"); } 4 、效果展示原始列表数据
{ "code": 200, "msg": "操作成功", "data": [ { "id": "310000", "name": "电子商务", "parentId": "000000" }, { "id": "310100", "name": "大宗商品", "parentId": "310000" }, { "id": "310101", "name": "大宗商品综合", "parentId": "310100" }, { "id": "310102", "name": "钢铁类电商", "parentId": "310100" } ] }树状层次数据
{ "code": 200, "msg": "操作成功", "data": [ { "id": "310000", "name": "电子商务", "childList": [ { "id": "310100", "name": "大宗商品", "childList": [ { "id": "310101", "name": "大宗商品综合", "childList": [] }, { "id": "310102", "name": "钢铁类电商", "childList": [] } ] } ] } ] }三 、小结
通过一个小小的高频业务场景,抽离业务共性 ,屏蔽业务细节 ,实现了通用型业务逻辑的编码 。
希望广大技术朋友在完成日常开发工作的前提下,能够进一步打磨代码 ,感受编程之美 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!