Package org.miaixz.bus.core.tree
Class MapTree<T>
- Type Parameters:
T- ID类型
- All Implemented Interfaces:
Serializable,Cloneable,Comparable<Node<T>>,Map<String,,Object> SequencedMap<String,,Object> Node<T>
通过转换器将你的实体转化为TreeNodeMap节点实体 属性都存在此处,属性有序,可支持排序
- Since:
- Java 17+
- Author:
- Kimi Liu
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K, V> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaddChildren(MapTree<T>... children) 增加子节点,同时关联子节点的父节点为当前节点递归克隆当前节点(即克隆整个树,保留字段值) 注意,此方法只会克隆节点,节点属性如果是引用类型,不会克隆递归过滤当前树,注意此方法会修改当前树 通过Predicate指定的过滤规则,本节点或子节点满足过滤条件,则保留当前节点及其所有子节点,否则抛弃节点及其子节点递归过滤并生成新的树 通过Predicate指定的过滤规则,本节点或子节点满足过滤条件,则保留当前节点,否则抛弃节点及其子节点获取所有子节点获取节点配置getId()获取IDgetName()获取节点标签名称获取ID对应的节点,如果有多个ID相同的节点,只返回第一个。 此方法只查找此节点及子节点,采用广度优先遍历。获取父节点获取父节点IDgetParentsName(boolean includeCurrentNode) 获取所有父节点名称列表getParentsName(T id, boolean includeCurrentNode) 获取所有父节点名称列表Comparable<?> 获取权重booleanhasChild()是否有子节点,无子节点则此为叶子节点void扩展属性setChildren(List<MapTree<T>> children) 设置子节点,设置后会覆盖所有原有子节点设置IDsetName(CharSequence name) 设置节点标签名称设置父节点setParentId(T parentId) 设置父节点IDsetWeight(Comparable<?> weight) 设置权重toString()void递归树并处理子树下的节点,采用深度优先遍历方式。void递归树并处理子树下的节点Methods inherited from class java.util.LinkedHashMap
clear, containsValue, entrySet, forEach, get, getOrDefault, keySet, newLinkedHashMap, putFirst, putLast, removeEldestEntry, replaceAll, reversed, sequencedEntrySet, sequencedKeySet, sequencedValues, valuesMethods inherited from class java.util.HashMap
clone, compute, computeIfAbsent, computeIfPresent, containsKey, isEmpty, merge, newHashMap, put, putAll, putIfAbsent, remove, remove, replace, replace, sizeMethods inherited from class java.util.AbstractMap
equals, hashCodeMethods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, containsKey, equals, hashCode, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, sizeMethods inherited from interface java.util.SequencedMap
firstEntry, lastEntry, pollFirstEntry, pollLastEntry
-
Constructor Details
-
MapTree
public MapTree()构造 -
MapTree
构造- Parameters:
nodeConfig- TreeNode配置
-
-
Method Details
-
getConfig
获取节点配置- Returns:
- 节点配置
-
getParent
获取父节点- Returns:
- 父节点
-
setParent
设置父节点- Parameters:
parent- 父节点- Returns:
- this
-
getNode
获取ID对应的节点,如果有多个ID相同的节点,只返回第一个。 此方法只查找此节点及子节点,采用广度优先遍历。- Parameters:
id- ID- Returns:
- 节点
-
getParentsName
获取所有父节点名称列表比如有个人在研发1部,他上面有研发部,接着上面有技术中心 返回结果就是:[研发一部, 研发中心, 技术中心]
- Parameters:
id- 节点IDincludeCurrentNode- 是否包含当前节点的名称- Returns:
- 所有父节点名称列表
-
getParentsName
获取所有父节点名称列表比如有个人在研发1部,他上面有研发部,接着上面有技术中心 返回结果就是:[研发一部, 研发中心, 技术中心]
- Parameters:
includeCurrentNode- 是否包含当前节点的名称- Returns:
- 所有父节点名称列表
-
getId
Description copied from interface:Node获取ID -
setId
Description copied from interface:Node设置ID -
getParentId
Description copied from interface:Node获取父节点ID- Specified by:
getParentIdin interfaceNode<T>- Returns:
- 父节点ID
-
setParentId
Description copied from interface:Node设置父节点ID- Specified by:
setParentIdin interfaceNode<T>- Parameters:
parentId- 父节点ID- Returns:
- this
-
getName
Description copied from interface:Node获取节点标签名称 -
setName
Description copied from interface:Node设置节点标签名称 -
getWeight
Description copied from interface:Node获取权重 -
setWeight
Description copied from interface:Node设置权重 -
getChildren
获取所有子节点- Returns:
- 所有子节点
-
setChildren
设置子节点,设置后会覆盖所有原有子节点- Parameters:
children- 子节点列表,如果为null表示移除子节点- Returns:
- this
-
hasChild
public boolean hasChild()是否有子节点,无子节点则此为叶子节点- Returns:
- 是否有子节点
-
walk
递归树并处理子树下的节点,采用深度优先遍历方式。- Parameters:
consumer- 节点处理器
-
walk
递归树并处理子树下的节点- Parameters:
consumer- 节点处理器broadFirst- 是否广度优先遍历
-
filterNew
递归过滤并生成新的树 通过Predicate指定的过滤规则,本节点或子节点满足过滤条件,则保留当前节点,否则抛弃节点及其子节点- Parameters:
predicate- 节点过滤规则函数,只需处理本级节点本身即可,Predicate.test(Object)为true保留,null表示全部保留- Returns:
- 过滤后的节点,
null表示不满足过滤要求,丢弃之 - See Also:
-
filter
递归过滤当前树,注意此方法会修改当前树 通过Predicate指定的过滤规则,本节点或子节点满足过滤条件,则保留当前节点及其所有子节点,否则抛弃节点及其子节点- Parameters:
predicate- 节点过滤规则函数,只需处理本级节点本身即可,Predicate.test(Object)为true保留,null表示保留全部- Returns:
- 过滤后的节点,
null表示不满足过滤要求,丢弃之 - See Also:
-
addChildren
增加子节点,同时关联子节点的父节点为当前节点- Parameters:
children- 子节点列表- Returns:
- this
-
putExtra
扩展属性- Parameters:
key- 键value- 扩展值
-
toString
- Overrides:
toStringin classAbstractMap<String,Object>
-
cloneTree
递归克隆当前节点(即克隆整个树,保留字段值) 注意,此方法只会克隆节点,节点属性如果是引用类型,不会克隆- Returns:
- 新的节点
-