zoukankan      html  css  js  c++  java
  • Java 组装 Tree

    import java.util.ArrayList;
    import java.util.List;
    
    
    public class TreeNode {
        protected Long id;
        protected Long parentId;
    
        public List<TreeNode> getChildren() {
            return children;
        }
    
        public void setChildren(List<TreeNode> children) {
            this.children = children;
        }
    
          List<TreeNode> children = new ArrayList<TreeNode>(10);
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public Long getParentId() {
            return parentId;
        }
    
        public void setParentId(Long parentId) {
            this.parentId = parentId;
        }
    
        public void add(TreeNode node){
            children.add(node);
        }
    }
    import java.util.ArrayList;
    import java.util.List;
    
    
    public class TreeUtil {
      /**
       * 两层循环实现建树
       *
       * @param treeNodes 传入的树节点列表
       * @return
       */
      public static <T extends TreeNode> List<T> bulid(List<T> treeNodes, Object root) {
    
        List<T> trees = new ArrayList<T>(10);
    
        for (T treeNode : treeNodes) {
    
          if (root.equals(treeNode.getParentId())) {
            trees.add(treeNode);
          }
    
          for (T it : treeNodes) {
            if (it.getParentId().equals(treeNode.getId())) {
              if (treeNode.getChildren() == null) {
                treeNode.setChildren(new ArrayList<TreeNode>(10));
              }
              treeNode.add(it);
            }
          }
        }
        return trees;
      }
    
      /**
       * 使用递归方法建树
       *
       * @param treeNodes
       * @return
       */
      public static <T extends TreeNode> List<T> buildByRecursive(List<T> treeNodes,Object root) {
        List<T> trees = new ArrayList<T>(10);
        for (T treeNode : treeNodes) {
          if (root.equals(treeNode.getParentId())) {
            trees.add(findChildren(treeNode, treeNodes));
          }
        }
        return trees;
      }
    
      /**
       * 递归查找子节点
       *
       * @param treeNodes
       * @return
       */
      public static <T extends TreeNode> T findChildren(T treeNode, List<T> treeNodes) {
        for (T it : treeNodes) {
          if (treeNode.getId().equals(it.getParentId()) ) {
            if (treeNode.getChildren() == null) {
              treeNode.setChildren(new ArrayList<TreeNode>(10));
            }
            treeNode.add(findChildren(it, treeNodes));
          }
        }
        return treeNode;
      }
    
    
    
    
    }
  • 相关阅读:
    45 个非常有用的 Oracle 查询语句
    [转载]java图片缩放处理
    [转载]java图片缩放处理
    十步完全理解SQL
    十步完全理解SQL
    day04_20170521_函数(二)
    to disable the entity lazy load, The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
    wordpress mobile templates
    linq query, using int.parse to convert varchar to int while orderby
    appfabric 简单应用
  • 原文地址:https://www.cnblogs.com/mingforyou/p/14677456.html
Copyright © 2011-2022 走看看