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, valuesclone, compute, computeIfAbsent, computeIfPresent, containsKey, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, sizeequals, hashCodefinalize, getClass, notify, notifyAll, wait, wait, waitcompute, computeIfAbsent, computeIfPresent, containsKey, equals, hashCode, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, sizepublic 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()
NodegetParentId in interface Node<T>public Tree<T> setParentId(T parentId)
NodesetParentId in interface Node<T>parentId - 父节点IDpublic CharSequence getName()
Nodepublic Tree<T> setName(CharSequence name)
Nodepublic Comparable<?> getWeight()
Nodepublic Tree<T> setWeight(Comparable<?> weight)
Nodepublic 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 © 2025. All rights reserved.