• 嵌套树


    第一步:新建treenode

    @Data
    @ApiModel(value = "树形节点")
    public class TreeNode {
    @ApiModelProperty(value = "当前节点id")
    protected int id;
    @ApiModelProperty(value = "父节点id")
    protected int parentId;
    @ApiModelProperty(value = "子节点列表")
    protected List<TreeNode> children = new ArrayList<TreeNode>();

    public void add(TreeNode node) {
    children.add(node);
    }
    }

    第二步:查到所有的列  排序好

    第三步:循环所有的列  再循环找每列的子集children set给这列(idpartenid)

    /**
    * 使用递归方法建树
    *
    * @param treeNodes
    * @return
    */
    public <T extends TreeNode> List<T> buildByRecursive(List<T> treeNodes, Object root) {
    List<T> trees = new ArrayList<T>();
    for (T treeNode : treeNodes) {
    if (root.equals(treeNode.getParentId())) {
    trees.add(findChildren(treeNode, treeNodes));
    }
    }
    return trees;
    }

    /**
    * 递归查找子节点
    *
    * @param treeNodes
    * @return
    */
    public <T extends TreeNode> T findChildren(T treeNode, List<T> 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;
    }

    第三步 

  • 相关阅读:
    C#遍历List并删除某个或者几个元素的方法
    7月清北学堂培训 Day 4
    7月清北学堂培训 Day 3
    7月清北学堂培训 Day 2
    7月清北学堂培训 Day 1
    P1383 高级打字机
    P2401 不等数列
    P1412 经营与开发
    P1314 聪明的质监员
    2019.7.9 校内测试 T3 15数码问题
  • 原文地址:https://www.cnblogs.com/jishumonkey/p/15889669.html
Copyright © 2020-2023  润新知