Java数据封装成树形结构,多级
参考地址:https://blog.csdn.net/chendu500qiang/article/details/91493147
1、实体类
@data
public class PublishServiceType implements Comparable<PublishServiceType>{ /**
*
*/
private static final long serialVersionUID = -3572108154932898825L; /*
* @see {code}
* @comment 类型标识
*/
private String code;
/*
* @see {createtime}
* @comment 创建时间
*/
private java.util.Date createtime;
/*
* @see {defaultmanual}
* @comment 服务类型默认使用手册
*/
private String defaultmanual;
/*
* @see {description}
* @comment 服务类型描述
*/
private String description;
/*
* @see {id}
* @comment 主键
*/
private String id;
/*
* @see {isdelete}
* @comment 是否可以删除
*/
private Integer isdelete;
/*
* @see {lastmodifytime}
* @comment 最近修改时间
*/
private java.util.Date lastmodifytime;
/*
* @see {name}
* @comment 服务类型名称
*/
private String name;
/*
* @see {parentid}
* @comment 服务类型父节点
*/
private String parentid; /**
* 排序
*/
private Integer sort; private List<PublishServiceType>children;
}
2、数据封装
@Override
public List<PublishServiceType> findList(String name) {
List<PublishServiceType>list = publishServiceTypeMapper.findByName(name);
if (JudgeUtil.isEmpty(list)){
return null;
}
//父子级组装
return parentAndChildren(list);
}
private List<PublishServiceType>parentAndChildren(List<PublishServiceType> list){ //最顶层根节点
List<PublishServiceType>rootList = new ArrayList<>();
//非最顶层根节点
List<PublishServiceType>bodyList = new ArrayList<>();
for (PublishServiceType publishServiceType : list) {
if (StringUtils.isBlank(publishServiceType.getParentid())){
rootList.add(publishServiceType);
}else{
bodyList.add(publishServiceType);
}
}
return getTree(rootList,bodyList);
} public List<PublishServiceType> getTree(List<PublishServiceType>rootList, List<PublishServiceType>bodyList){
if (!JudgeUtil.isEmpty(bodyList)){
//声明一个map,用来过滤已操作过的数据
Map<String,String> map = new HashMap<>(bodyList.size());
rootList.forEach(parent->getChild(parent,bodyList,map));
return rootList;
}else{
return rootList;
}
} private void getChild(PublishServiceType parent,List<PublishServiceType>bodyList, Map<String,String> map){
List<PublishServiceType>childList = new ArrayList<>();
bodyList.stream().filter(c->!map.containsKey(c.getId()))
.filter(c->c.getParentid().equals(parent.getId()))
.forEach(c->{
map.put(c.getId(),c.getParentid());
getChild(c,bodyList,map);
childList.add(c);
}); parent.setChildren(childList);
}
3、结果
{
"code": 20000,
"message": "成功",
"data": [
{
"code": null,
"createtime": null,
"defaultmanual": null,
"description": null,
"id": "dc1d70b9eb7b4df3bbe8dcc6a93cbd57",
"isdelete": -1,
"lastmodifytime": null,
"name": "基础服务",
"parentid": "",
"sort": 1,
"children": [
{
"code": null,
"createtime": null,
"defaultmanual": null,
"description": null,
"id": "b1779671ef1b45e0a9a8a1edbff03f1e",
"isdelete": -1,
"lastmodifytime": null,
"name": "数据源服务",
"parentid": "dc1d70b9eb7b4df3bbe8dcc6a93cbd57",
"sort": 2,
"children": [
{
"code": null,
"createtime": null,
"defaultmanual": null,
"description": null,
"id": "2a38a8254ec348e9b54c9bf4622f23db",
"isdelete": 1,
"lastmodifytime": null,
"name": "测试添加数据库服务2",
"parentid": "b1779671ef1b45e0a9a8a1edbff03f1e",
"sort": null,
"children": []
}
]
},
{
"code": null,
"createtime": null,
"defaultmanual": null,
"description": null,
"id": "d4f3b047dc2d467a9b404ded8acf4673",
"isdelete": 1,
"lastmodifytime": null,
"name": "text_lsa",
"parentid": "dc1d70b9eb7b4df3bbe8dcc6a93cbd57",
"sort": null,
"children": []
}
]
},
{
"code": null,
"createtime": null,
"defaultmanual": null,
"description": null,
"id": "af1b4a4d2f074fa19e1dae0a5540a5bf",
"isdelete": 1,
"lastmodifytime": null,
"name": "测试添加1",
"parentid": "",
"sort": null,
"children": []
},
{
"code": null,
"createtime": null,
"defaultmanual": null,
"description": null,
"id": "62e15d859a224126884888a55df355a7",
"isdelete": 1,
"lastmodifytime": null,
"name": "测试添加2",
"parentid": "",
"sort": null,
"children": []
}
]
}
Java数据封装成树形结构,多级的更多相关文章
- c# List列表数据转换成树形结构
把List列表结构 转换成树形结构 /// <summary> /// 构造树形Json /// </summary> public static class TreeJson ...
- 使用js将后台返回的数据转换成树形结构
将类似如下数据转换成树形的数据: [ { id: 1, name: '1', }, { id: 2, name: '1-1', parentId: 1 }, { id: 3, name: '1-1-1 ...
- 记一则 Lambda内递归调用方法将集合对象转换成树形结构
public dynamic GetDepartments(string labID) { List<int> usedIDs = new List<int>(); //缓存已 ...
- javascript将平行的拥有上下级关系的数据转换成树形结构
转换函数 var Littlehow = {}; /** * littlehow 2019-05-15 * 平行数据树形转换器 * @type {{format: tree.format, sort: ...
- 《Java数据结构》树形结构
树形结构是一层次的嵌套结构. 一个树形结构的外层和内层有相似的结构, 所以这种结构多可以递归的表示.经典数据结构中的各种树形图是一种典型的树形结构:一颗树可以简单的表示为根, 左子树, 右子树. 左子 ...
- java list实现树形结构
1.javabean import java.util.List; public class TreeNode { private String id; private String parentId ...
- Word排版成树形结构技巧
初始文字 A A1 A2 B1 B1 B2 C C1 希望效果 关健设置
- dom4j 解析字符串成树形结构
引入maven依赖: <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artif ...
- idea目录结构子目录在父目录后面跟着改成树形结构
1.点击项目窗口的设置按钮 2.取消Compact Middle Packages选项的对勾即可
随机推荐
- centos7 编译问题:aclocal-1.14: command not found
centos7 编译问题:aclocal-1.14: command not found https://blog.csdn.net/vr7jj/article/details/80438663
- 九、SpringBoot集成Thymeleaf模板引擎
Thymeleaf咋读!??? 呵呵,是不是一脸懵逼...哥用我的大学四级英文知识告诉你吧:[θaimlif]. 啥玩意?不会音标?...那你就这样叫它吧:“赛母李府”,大部分中国人是听不出破绽的.. ...
- Git:目录
ylbtech-Git:目录 1.返回顶部 1. https://git-scm.com/ 2. 2.返回顶部 1.Easy Git Integration Tools https://marketp ...
- 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第2节 maven的安装和仓库种类_05仓库的种类和彼此关系
maven工程里面放的是jar包的坐标. 启动项目的时候会根据jar包的坐标到仓库中找对应的坐标 maven的安装目录.conf/settings.xml文件 ${user.home}表示系统盘,用户 ...
- robot framework断言
一.基础 RobotFramework带有丰富的系统关键,使用时无需导入,直接使用,为写自动化用例带来了极大的方便:不能停留在知道或者是会得程度,只有熟练使用各关键字,才能提升自动化用例的写作效率.下 ...
- 中国MOOC_零基础学Java语言_第2周 判断_1时间换算
第2周编程题 查看帮助 返回 第2周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截 ...
- 数组Array用法
一 创建数组 // 指定长度(稀疏数组) const arr1 = Array(2); console.log(arr1); const arr2 = new Array(4); console.lo ...
- ubuntu18.04 安装mongodb并使用Robo 3T连接Mongodb数据库
1.前提: 系统:ubuntu18.04 64位 数据库:mongodb GUI:Robo 3T 2018.3.0 描述: mongodb 安装在局域网内的ubuntu的机子上面, 在win 下 ...
- 《React+Redux前端开发实战》笔记1:不涉及React项目构建的Hello World案例
本小节实现一个不涉及项目构建的Hello World. [React的第一个Hello World网页] 源码地址:https://jsfiddle.net/allan91/2h1sf0ky/8/ & ...
- Linux-SSH远程管理服务实战
figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-wid ...