java递归创建目录_java递归生成目录树

一、创建实体类

public class TreeNode {

protected int id;

protected int parentId;

protected int level;

protected String name;

protected String code;

protected String type;

protected List children = new ArrayList<>();

public TreeNode(int id) {

this.id = id;

}

public TreeNode(int id, int parentId) {

this.id = id;

this.parentId = parentId;

}

public TreeNode(int id, int parentId, String name) {

this.id = id;

this.parentId = parentId;

this.name = name;

}

public TreeNode(int id, int parentId, String name, String code) {

this.id = id;

this.parentId = parentId;

this.name = name;

this.code = code;

}

public TreeNode(int id, int parentId, String name, int level) {

this(id, parentId, name);

this.level = level;

}

public TreeNode(int id, int parentId, String name, int level, String code) {

this(id, parentId, name, level);

this.code = code;

}

public TreeNode(int id, int parentId, String name, String code, String type) {

this(id, parentId, name);

this.code = code;

this.type = type;

}

public void add(TreeNode node) {

children.add(node);

}

}

二、使用递归方法建树

/**

* 使用递归方法建树

* @param treeNodes

* @return

*/

public static List buildByRecursive(List treeNodes,Object root) {

List trees = new ArrayList();

for (T treeNode : treeNodes) {

if (root.equals(treeNode.getParentId())) {

trees.add(findChildren(treeNode, treeNodes));

}

}

return trees;

}

/**

* 递归查找子节点

* @param treeNodes

* @return

*/

public static T findChildren(T treeNode, List treeNodes) {

for (T it : treeNodes) {

if (treeNode.getId() == it.getParentId()) {

if (treeNode.getChildren() == null) {

treeNode.setChildren(new ArrayList());

}

treeNode.add(findChildren(it, treeNodes));

}

}

return treeNode;

}

三、验证

public static void main(String[] args) {

List treeNodes = new ArrayList<>();

TreeNode treeNode1 = new TreeNode(1,0,"一级目录1","一级目录1","一级目录1");

TreeNode treeNode2 = new TreeNode(2,0,"一级目录2","一级目录2","一级目录2");

TreeNode treeNode3 = new TreeNode(3,1,"二级目录1","二级目录1","二级目录1");

TreeNode treeNode4 = new TreeNode(4,3,"三级目录1","三级目录1","三级目录1");

TreeNode treeNode5 = new TreeNode(5,2,"二级目录2","二级目录2","二级目录2");

TreeNode treeNode6 = new TreeNode(6,5,"三级目录2","三级目录2","三级目录2");

treeNodes.add(treeNode1);

treeNodes.add(treeNode2);

treeNodes.add(treeNode3);

treeNodes.add(treeNode4);

treeNodes.add(treeNode5);

treeNodes.add(treeNode6);

List treeNodes1 = buildByRecursive(treeNodes, 0);

for (TreeNode treeNode : treeNodes1) {

System.out.println("treeNode = " + treeNode);

}

}

四、结果

treeNode = TreeNode(id=1, parentId=0, level=0, name=一级目录1, code=一级目录1, type=一级目录1, children=[TreeNode(id=3, parentId=1, level=0, name=二级目录1, code=二级目录1, type=二级目录1, children=[TreeNode(id=4, parentId=3, level=0, name=三级目录1, code=三级目录1, type=三级目录1, children=[])])])

treeNode = TreeNode(id=2, parentId=0, level=0, name=一级目录2, code=一级目录2, type=一级目录2, children=[TreeNode(id=5, parentId=2, level=0, name=二级目录2, code=二级目录2, type=二级目录2, children=[TreeNode(id=6, parentId=5, level=0, name=三级目录2, code=三级目录2, type=三级目录2, children=[])])])

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值