T
- ID类型public class Tree<T> extends LinkedHashMap<String,Object> implements Node<T>
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>
Constructor and Description |
---|
Tree() |
Tree(TreeNodeConfig treeNodeConfig)
构造
|
Modifier and Type | Method and Description |
---|---|
Tree<T> |
addChildren(Tree<T>... children)
增加子节点,同时关联子节点的父节点为当前节点
|
Tree<T> |
cloneTree()
递归克隆当前节点(即克隆整个树,保留字段值)
注意,此方法只会克隆节点,节点属性如果是引用类型,不会克隆 |
Tree<T> |
filter(Filter<Tree<T>> filter)
递归过滤当前树,注意此方法会修改当前树
通过 Filter 指定的过滤规则,本节点或子节点满足过滤条件,则保留当前节点及其所有子节点,否则抛弃节点及其子节点 |
Tree<T> |
filterNew(Filter<Tree<T>> filter)
递归过滤并生成新的树
通过 Filter 指定的过滤规则,本节点或子节点满足过滤条件,则保留当前节点,否则抛弃节点及其子节点 |
List<Tree<T>> |
getChildren()
获取所有子节点
|
TreeNodeConfig |
getConfig()
获取节点配置
|
T |
getId()
获取ID
|
CharSequence |
getName()
获取节点标签名称
|
Tree<T> |
getNode(T id)
获取ID对应的节点,如果有多个ID相同的节点,只返回第一个。
|
Tree<T> |
getParent()
获取父节点
|
T |
getParentId()
获取父节点ID
|
List<CharSequence> |
getParentsName(boolean includeCurrentNode)
获取所有父节点名称列表
比如有个人在研发1部,他上面有研发部,接着上面有技术中心
返回结果就是:[研发一部, 研发中心, 技术中心] |
List<CharSequence> |
getParentsName(T id,
boolean includeCurrentNode)
获取所有父节点名称列表
比如有个人在研发1部,他上面有研发部,接着上面有技术中心
返回结果就是:[研发一部, 研发中心, 技术中心] |
Comparable<?> |
getWeight()
获取权重
|
boolean |
hasChild()
是否有子节点,无子节点则此为叶子节点
|
void |
putExtra(String key,
Object value)
扩展属性
|
Tree<T> |
setChildren(List<Tree<T>> children)
设置子节点,设置后会覆盖所有原有子节点
|
Tree<T> |
setId(T id)
设置ID
|
Tree<T> |
setName(CharSequence name)
设置节点标签名称
|
Tree<T> |
setParent(Tree<T> parent)
设置父节点
|
Tree<T> |
setParentId(T parentId)
设置父节点ID
|
Tree<T> |
setWeight(Comparable<?> weight)
设置权重
|
String |
toString() |
void |
walk(Consumer<Tree<T>> consumer)
递归树并处理子树下的节点:
|
clear, containsValue, entrySet, forEach, get, getOrDefault, keySet, removeEldestEntry, replaceAll, values
clone, compute, computeIfAbsent, computeIfPresent, containsKey, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, size
equals, hashCode
finalize, getClass, notify, notifyAll, wait, wait, wait
compute, computeIfAbsent, computeIfPresent, containsKey, equals, hashCode, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, size
public Tree()
public Tree(TreeNodeConfig treeNodeConfig)
treeNodeConfig
- TreeNode配置public TreeNodeConfig getConfig()
public Tree<T> getNode(T id)
id
- IDpublic List<CharSequence> getParentsName(T id, boolean includeCurrentNode)
比如有个人在研发1部,他上面有研发部,接着上面有技术中心
返回结果就是:[研发一部, 研发中心, 技术中心]
id
- 节点IDincludeCurrentNode
- 是否包含当前节点的名称public List<CharSequence> getParentsName(boolean includeCurrentNode)
比如有个人在研发1部,他上面有研发部,接着上面有技术中心
返回结果就是:[研发一部, 研发中心, 技术中心]
includeCurrentNode
- 是否包含当前节点的名称public Tree<T> setParent(Tree<T> parent)
parent
- 父节点public T getParentId()
Node
getParentId
in interface Node<T>
public Tree<T> setParentId(T parentId)
Node
setParentId
in interface Node<T>
parentId
- 父节点IDpublic CharSequence getName()
Node
public Tree<T> setName(CharSequence name)
Node
public Comparable<?> getWeight()
Node
public Tree<T> setWeight(Comparable<?> weight)
Node
public boolean hasChild()
public void walk(Consumer<Tree<T>> consumer)
consumer
- 节点处理器public Tree<T> filterNew(Filter<Tree<T>> filter)
Filter
指定的过滤规则,本节点或子节点满足过滤条件,则保留当前节点,否则抛弃节点及其子节点filter
- 节点过滤规则函数,只需处理本级节点本身即可null
表示不满足过滤要求,丢弃之filter(Filter)
public Tree<T> filter(Filter<Tree<T>> filter)
Filter
指定的过滤规则,本节点或子节点满足过滤条件,则保留当前节点及其所有子节点,否则抛弃节点及其子节点filter
- 节点过滤规则函数,只需处理本级节点本身即可null
表示不满足过滤要求,丢弃之filterNew(Filter)
public Tree<T> setChildren(List<Tree<T>> children)
children
- 子节点列表,如果为null
表示移除子节点@SafeVarargs public final Tree<T> addChildren(Tree<T>... children)
children
- 子节点列表public String toString()
toString
in class AbstractMap<String,Object>
Copyright © 2024. All rights reserved.