将lits集合转化为树状结构
一,bean的类型:
public class DeptListRES {
/**
* 子节点
*/
private List<DeptListRES> children;
private Integer id;
/**
* 部门编码
*/
private String deptNo;
/**
* 部门名称
*/
private String deptName;
/**
* 部门分类,对应字典表dept_type
*/
private String deptType;
/**
* 全名
*/
private String fullName;
private Integer parentId;
/**
* 所有的父id
*/
private String parentIds;
/**
* 本级排序号
*/
private Integer treeSort;
/**
* 所有级别排序号
*/
private String treeSorts;
/**
* 是否子节点
*/
private String treeLeaf;
}
2.通过数据库查询出list列表,调用方法转化为树状结构
List<DeptListRES> depts = deptMapper.list(params);
return formatter(depts);
/**
* 将list转化为树状结构
*
* @param list
* @return
*/
public List<DeptListRES> formatter(List<DeptListRES> list) {
Map<Integer, DeptListRES> map = new HashMap<Integer, DeptListRES>();
for (DeptListRES pt : list) {
//将集合添加进map,key为id,值为对象
map.put(pt.getId(), pt);
}
return getChild(list, map);
} /**
* 创建树形结构
*
* @param childL
* @param map
* @return
*/
private List<DeptListRES> getChild(List<DeptListRES> childL, Map<Integer, DeptListRES> map) {
//返回的对象
List<DeptListRES> par = new ArrayList<>();
for (DeptListRES deptListRES : childL) {
//获取父节点
DeptListRES dt = map.get(deptListRES.getParentId());
//父节点存在,就在父节点里面添加子节点(利用list里面的对象,和map里面的值得对象为同一个来修改children)
if (dt != null) {
if (dt.getChildren() == null) {
dt.setChildren(new ArrayList<>());
}
dt.getChildren().add(deptListRES);
} else {
//添加父节点
par.add(deptListRES);
}
}
return par;
}
将lits集合转化为树状结构的更多相关文章
- java集合树状结构及源码
java集合树状结构及源码 最近一直想看一下java集合的源码,毕竟平时用的比较多,但总是感觉是跟着习惯new出来一个对象,比如ArrayList,HashMap等等,所以就简单的看了一下,了解了一下 ...
- 树状结构Java模型、层级关系Java模型、上下级关系Java模型与html页面展示
树状结构Java模型.层级关系Java模型.上下级关系Java模型与html页面展示 一.业务原型:公司的组织结构.传销关系网 二.数据库模型 很简单,创建 id 与 pid 关系即可.(pid:pa ...
- 分享使用NPOI导出Excel树状结构的数据,如部门用户菜单权限
大家都知道使用NPOI导出Excel格式数据 很简单,网上一搜,到处都有示例代码. 因为工作的关系,经常会有处理各种数据库数据的场景,其中处理Excel 数据导出,以备客户人员确认数据,场景很常见. ...
- 由简入繁实现Jquery树状结构
在项目中,我们经常会需要一些树状结构的样式来显示层级结构等,比如下图的样式,之前在学.net的时候可以直接拖个服务端控件过来直接使用非常方便.但是利用Jquery的一些插件,也是可以实现这些效果的,比 ...
- php实现树状结构无级分类
php实现树状结构无级分类 ).",'树2-1-1-2')";mysql_query($sql);?>
- Android无限级树状结构
通过对ListView简单的扩展.再封装,即可实现无限层级的树控件TreeView. package cn.asiontang.nleveltreelistview; import android.a ...
- 使用Map辅助拼装树状结构,消除递归调用
目前菜单或其他树状结构在数据库中的存储,多数是以一个parentid作为关联字段,以一维形式存储.使用时全部查询出来,然后在内存中拼装成树状结构.现在主要涉及的是拼装方法的问题. 一般可以进行 递归调 ...
- lua 怎样输出树状结构的table?
为了让游戏前端数据输出更加条理,做了一个简单树状结构来打印数据. ccmlog.lua local function __tostring(value, indent, vmap) local str ...
- js List<Map> 将偏平化的数组转为树状结构并排序
数据格式: [ { "id":"d3e8a9d6-e4c6-4dd8-a94f-07733d3c1b59", "parentId":&quo ...
随机推荐
- Windows下使用mklink命令参数介绍
Windows下创建符号链接使用命令mklink常用参数有 /D /J,两者有比较明显的区别 区别1:创建/D 创建目录符号链接(即目录快捷方式)而不是文件符号链接(默认为文件符号链接),可以使用相对 ...
- BizTalk Map 累积连接字符串
更多内容请查看:BizTalk动手实验系列目录 BizTalk 开发系列 BizTalk 培训/项目开发/技术支持请联系:Email:cbcye ...
- php生成毫秒时间戳的例子
php时间函数time()生成当前时间的秒数,但是在一些情况下我们需要获取当前服务器时间和GMT(格林威治时间)1970年1月0时0分0秒的毫秒数,与Java中的currentTimeMilis()函 ...
- Vue Resource root options not used?
I specify a root options in my Vue-Resource in my main.js file, but when I do the request, it does n ...
- 再杀掉app之后 删除NSUserDefault存在本地的数据
这两天在处理 app退出后删除本地数据 在appDelegate里的这个函数里设置发现进不去 - (void)applicationWillTerminate:(UIApplication*)ap ...
- re.S、 re.M
re.S是代表.可以匹配\n以及“ re.M是多行 code import re a = '''asdfsafhellopass: 234455 worldafdsf ''' b = re.fi ...
- bootstrapTable treegrid的使用
最近打算自己弄一个后台,在整顿树形插件的时候,遇到问题,bootstrapTable treegrid最开始是怎么都显示不了树形,然后是数据出不来, 现在来记录下. 问题1:最开始怎么都显示不出来的问 ...
- application.properties详解 --springBoot配置文件【转载】
# spring boot application.properties配置的各个属性详解 # 该示例文件作为标准提供.(官方文档 翻译过来的) # 还是花了些功夫翻译,各位如果转发,请留下本文地址, ...
- 最简单的设计模式——单例模式的演进和推荐写法(Java 版)
前言 如下是之前总结的 C++ 版的:软件开发常用设计模式—单例模式总结(c++版),对比发现 Java 实现的单例模式和 C++ 的在线程安全上还是有些区别的. 概念不多说,没意思,我自己总结就是: ...
- Centos&Redhat下bcm43142博通无线网卡linux驱动之二
上次通过更换内核实现成功编译驱动无线网卡,但是启动到系统原内核下依然没有bcm43142的驱动,遂准备在原内核下编译驱动,记录一下 ps:更推荐这种方法,避免因更换内核出现其他兼容性问题 1.准备驱动 ...