递归目录树目录树

在实际开发过程中,经常会使用目录结构(层级结构),最常见场景是评论列表,还有的就是在后台中我们的权限管理以及其他管理中都会用到,下面我来介绍一下使用递归的方法来生成一个目录树。
首先,我们需要将符合条件的所有元素查询出来,在这里我们的元素就是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;
}
posted @ 2023-05-15 18:49  ClearRain  阅读(58)  评论(0)    收藏  举报