树形结构

public class TreeBuilder {

/**
 * 两层循环实现建树
 * @param treeNodes 传入的树节点列表
 * @return
 */
public static List<TreeNode> bulid(List<TreeNode> treeNodes) {

    List<TreeNode> trees = new ArrayList<TreeNode>();

    for (TreeNode treeNode : treeNodes) {

        if ("0".equals(treeNode.getParentResourceId())||treeNode.getParentResourceId().isEmpty()) {
            trees.add(treeNode);
        }

        for (TreeNode it : treeNodes) {
            if (it.getParentResourceId() == treeNode.getResourceId()) {
                if (treeNode.getChildren() == null) {
                    treeNode.setChildren(new ArrayList<TreeNode>());
                }
                treeNode.getChildren().add(it);
            }
        }
    }
    return trees;
}

/**
 * 使用递归方法建树
 * @param treeNodes
 * @return
 */
public static List<TreeNode> buildByRecursive(List<TreeNode> treeNodes) {
    List<TreeNode> trees = new ArrayList<TreeNode>();
    for (TreeNode treeNode : treeNodes) {
        if ("0".equals(treeNode.getParentResourceId())||treeNode.getParentResourceId().trim().isEmpty()) {
            trees.add(treeNode);
        }else {
            for (TreeNode tree:trees) {
                if(tree.getResourceId().equals(treeNode.getParentResourceId())){
                    if(tree.getChildren()!=null&&tree.getChildren().size()>0){
                        List<TreeNode> list = tree.getChildren();
                        list.add(treeNode);
                        tree.setChildren(list);
                    }else{
                        List<TreeNode> list=new ArrayList<>();
                        list.add(treeNode);
                        tree.setChildren(list);
                    }
                    break;
                }
            }

        }
    }
    return trees;
}

/**
 * 递归查找子节点
 * @param treeNodes
 * @return
 */
public static TreeNode findChildren(TreeNode treeNode,List<TreeNode> treeNodes) {
    TreeNode tree=new TreeNode();
    for (TreeNode it : treeNodes) {
        if(treeNode.getResourceId().equals(it.getParentResourceId())) {
            if (treeNode.getChildren() == null) {
                treeNode.setChildren(new ArrayList<TreeNode>());
            }
            treeNode.getChildren().add(findChildren(it,treeNodes));
        }
    }
    return treeNode;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值