类 Tree<T>

类型参数:
T - ID类型
所有已实现的接口:
Serializable, Cloneable, Comparable<Node<T>>, Map<String,Object>, Node<T>

public class Tree<T> extends LinkedHashMap<String,Object> implements Node<T>
通过转换器将你的实体转化为TreeNodeMap节点实体 属性都存在此处,属性有序,可支持排序
作者:
zeng
另请参阅:
  • 构造器详细资料

    • Tree

      public Tree()
    • Tree

      public Tree(TreeNodeConfig treeNodeConfig)
      构造
      参数:
      treeNodeConfig - TreeNode配置
  • 方法详细资料

    • getConfig

      public TreeNodeConfig getConfig()
      获取节点配置
      返回:
      节点配置
    • getParent

      public Tree<T> getParent()
      获取父节点
      返回:
      父节点
    • getNode

      public Tree<T> getNode(T id)
      获取ID对应的节点,如果有多个ID相同的节点,只返回第一个。
      此方法只查找此节点及子节点,采用广度优先遍历。
      参数:
      id - ID
      返回:
      节点
    • getParentsName

      public List<CharSequence> getParentsName(T id, boolean includeCurrentNode)
      获取所有父节点名称列表

      比如有个人在研发1部,他上面有研发部,接着上面有技术中心
      返回结果就是:[研发一部, 研发中心, 技术中心]

      参数:
      id - 节点ID
      includeCurrentNode - 是否包含当前节点的名称
      返回:
      所有父节点名称列表
    • getParentsName

      public List<CharSequence> getParentsName(boolean includeCurrentNode)
      获取所有父节点名称列表

      比如有个人在研发1部,他上面有研发部,接着上面有技术中心
      返回结果就是:[研发一部, 研发中心, 技术中心]

      参数:
      includeCurrentNode - 是否包含当前节点的名称
      返回:
      所有父节点名称列表
    • setParent

      public Tree<T> setParent(Tree<T> parent)
      设置父节点
      参数:
      parent - 父节点
      返回:
      this
    • getId

      public T getId()
      从接口复制的说明: Node
      获取ID
      指定者:
      getId 在接口中 Node<T>
      返回:
      ID
    • setId

      public Tree<T> setId(T id)
      从接口复制的说明: Node
      设置ID
      指定者:
      setId 在接口中 Node<T>
      参数:
      id - ID
      返回:
      this
    • getParentId

      public T getParentId()
      从接口复制的说明: Node
      获取父节点ID
      指定者:
      getParentId 在接口中 Node<T>
      返回:
      父节点ID
    • setParentId

      public Tree<T> setParentId(T parentId)
      从接口复制的说明: Node
      设置父节点ID
      指定者:
      setParentId 在接口中 Node<T>
      参数:
      parentId - 父节点ID
      返回:
      this
    • getName

      public CharSequence getName()
      从接口复制的说明: Node
      获取节点标签名称
      指定者:
      getName 在接口中 Node<T>
      返回:
      节点标签名称
    • setName

      public Tree<T> setName(CharSequence name)
      从接口复制的说明: Node
      设置节点标签名称
      指定者:
      setName 在接口中 Node<T>
      参数:
      name - 节点标签名称
      返回:
      this
    • getWeight

      public Comparable<?> getWeight()
      从接口复制的说明: Node
      获取权重
      指定者:
      getWeight 在接口中 Node<T>
      返回:
      权重
    • setWeight

      public Tree<T> setWeight(Comparable<?> weight)
      从接口复制的说明: Node
      设置权重
      指定者:
      setWeight 在接口中 Node<T>
      参数:
      weight - 权重
      返回:
      this
    • getChildren

      public List<Tree<T>> getChildren()
      获取所有子节点
      返回:
      所有子节点
    • hasChild

      public boolean hasChild()
      是否有子节点,无子节点则此为叶子节点
      返回:
      是否有子节点
    • walk

      public void walk(Consumer<Tree<T>> consumer)
      递归树并处理子树下的节点:
      参数:
      consumer - 节点处理器
    • filterNew

      public Tree<T> filterNew(Function<Tree<T>,Boolean> filter)
      递归过滤并生成新的树
      通过Function指定的过滤规则,本节点或子节点满足过滤条件,则保留当前节点,否则抛弃节点及其子节点
      参数:
      filter - 节点过滤规则函数,只需处理本级节点本身即可
      返回:
      过滤后的节点,null 表示不满足过滤要求,丢弃之
    • filter

      public Tree<T> filter(Function<Tree<T>,Boolean> filter)
      递归过滤当前树,注意此方法会修改当前树
      通过Function指定的过滤规则,本节点或子节点满足过滤条件,则保留当前节点及其所有子节点,否则抛弃节点及其子节点
      参数:
      filter - 节点过滤规则函数,只需处理本级节点本身即可
      返回:
      过滤后的节点,null 表示不满足过滤要求,丢弃之
    • setChildren

      public Tree<T> setChildren(List<Tree<T>> children)
      设置子节点,设置后会覆盖所有原有子节点
      参数:
      children - 子节点列表,如果为null表示移除子节点
      返回:
      this
    • addChildren

      @SafeVarargs public final Tree<T> addChildren(Tree<T>... children)
      增加子节点,同时关联子节点的父节点为当前节点
      参数:
      children - 子节点列表
      返回:
      this
    • putExtra

      public void putExtra(String key, Object value)
      扩展属性
      参数:
      key - 键
      value - 扩展值
    • cloneTree

      public Tree<T> cloneTree()
      递归克隆当前节点(即克隆整个树,保留字段值)
      注意,此方法只会克隆节点,节点属性如果是引用类型,不会克隆
      返回:
      新的节点