递归目录树目录树
在实际开发过程中,经常会使用目录结构(层级结构),最常见场景是评论列表,还有的就是在后台中我们的权限管理以及其他管理中都会用到,下面我来介绍一下使用递归的方法来生成一个目录树。
首先,我们需要将符合条件的所有元素查询出来,在这里我们的元素就是FileClass,查询出来后使用List接收。
然后,对其进行遍历查询出最顶级元素,也就是parentId为0的元素。
然后使用递归 根据当前id一层一层的往下遍历查找到parentId为当前元素id的元素放在childList中。
/**
* 使用递归方法建树
* @param treeNodes
* @return
*/
public static List<FileClassVO> buildByRecursive(List<FileClass> treeNodes) {
List<FileClassVO> trees = new ArrayList<FileClassVO>();
for (FileClass treeNode : treeNodes) {
if (0 == treeNode.getParentId()) {
FileClassVO child = findChildren(treeNode,treeNodes);
trees.add(child);
}
}
return trees;
}
/**
* 递归查找子节点
* @param treeNodes
* @return
*/
public static FileClassVO findChildren(FileClass temp, List<FileClass> treeNodes) {
FileClassVO treeNode = temp.toVO();
treeNode.setChildren(new ArrayList<FileClassVO>());
for (FileClass it : treeNodes) {
if(treeNode.getId().equals(it.getParentId())) {
FileClassVO child = findChildren(it,treeNodes);
treeNode.getChildren().add(child);
}
}
return treeNode;
}

浙公网安备 33010602011771号