树结构数据的创建

树结构数据的创建

树结构是我们常用的数据结构,在这里记录一下构建异步树的方法;

注:
这里的T 你们要用的话请替换你要创建树的数据类型
t的属性即那个类的id属性

请从 [获取父节点,装载子节点] 开始看;

树结构类:

public class TreeNode extends  T
{
    /**
    *  id属性
    */
    private Long _id;
    /**
    * 树节点显示内容
    */
    private String _text;
    /**
    * 是否有节点标识
    */
    private String state;
    /**
    * 其他属性...
    */
    private String attributes;
    /**
    * 子节点列表
    */
    private List <TreeNode> children;
    //get,set方法省略
  }

将查出的数据装载到节点类中

private static TreeNode setClassTree (T class)
    {
        TreeNode treeNode = new TreeNode ();
       //省略其他属性的....
       //这个表示该节点有子节点
        treeNode .setState ("open");
        return metaDataClassTree;
    }

获取父节点,装载子节点

  public final static List <TreeNode> getfatherTreeNode (List <T> treeList)
    {
        List <TreeNode> newTreeDataList = new ArrayList <TreeNode> ();
        for (T t: treeList)
        {
             //父节点为空则为顶级节点
            if (StringUtils.isEmpty (t.getParentClassCode ()))
            {
                TreeNode classTree = new TreeNode ();
                classTree = setClassTree (t);
                // 获取该节点下的子节点
                classTree.setChildren (getChildrenTreeNodeForClass (t.getCode (), treeList));
                newTreeDataList.add (classTree);
            }
        }
        return newTreeDataList;
    }

递归装载子节点

  private final static List <TreeNode> getChildrenTreeNodeForClass (String pid, List <T> treeList)
    {
        List <TreeNode> newTreeDataList = new ArrayList <TreeNode> ();
        for (T t : treeList)
        {
            TreeNode classTree = new TreeNode ();
            //非空判断,如果有服节点编码则跳过
            if (StringUtils.isEmpty (t.getParentClassCode ()))
                continue;
            // 这是一个子节点
            if (t.getParentClassCode ().equals (pid))
            {
                // 递归获取子节点下的子节点
                classTree = setClassTree (t);           
                classTree.setChildren(getChildrenTreeNodeForClass (t.getCode (),treeList));
                newTreeDataList.add (classTree);
            }
        }
        return newTreeDataList;
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值