将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;
}

posted on 2019-01-17 11:37  栖梧  阅读(464)  评论(0编辑  收藏  举报