注:取自若依框架分离版,在此以示学习
实体类SysDept
public class SysDept extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 部门ID */
private Long deptId;
/** 父部门ID */
private Long parentId;
/** 祖级列表 */
private String ancestors;
/** 部门名称 */
private String deptName;
/** 显示顺序 */
private String orderNum;
/** 负责人 */
private String leader;
/** 联系电话 */
private String phone;
/** 邮箱 */
private String email;
/** 部门状态:0正常,1停用 */
private String status;
/** 删除标志(0代表存在 2代表删除) */
private String delFlag;
/** 父部门名称 */
private String parentName;
/** 子部门 */
private List<SysDept> children = new ArrayList<SysDept>();
/**入学学年*/
private String schoolYear;
/**学年制*/
private String year;
/**是否毕业*/
private String graduation
递归核心代码
/**
* 递归列表
*@param list 需要遍历实体类list集合
*@param t 根节点
*/
private void recursionFn(List<SysDept> list, SysDept t)
{
// 得到子节点列表
List<SysDept> childList = getChildList(list, t);
t.setChildren(childList);
for (SysDept tChild : childList)
{
if (hasChild(list, tChild))
{
recursionFn(list, tChild);
}
}
}
/**
* 得到子节点列表
*/
private List<SysDept> getChildList(List<SysDept> list, SysDept t)
{
List<SysDept> tlist = new ArrayList<SysDept>();
Iterator<SysDept> it = list.iterator();
while (it.hasNext())
{
SysDept n = (SysDept) it.next();
if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue())
{
tlist.add(n);
}
}
return tlist;
}
该树表的遍历核心思想是递归,先找到根节点再通过递归,找到父节点其下孩子节点。
本文介绍了如何使用Java编程语言中的递归方法,通过SysDept类实例展示如何遍历具有层级关系的部门树结构,包括获取子节点和设置递归调用。核心代码展示了如何根据父ID查找子部门并更新部门列表。
1038

被折叠的 条评论
为什么被折叠?



