Package org.miaixz.bus.core.center.map
Interface ForestMap<K,V>
- Type Parameters:
K- key类型V- value类型
- All Known Implementing Classes:
LinkedForestMap
基于多个
TreeEntry构成的、彼此平行的树结构构成的森林集合。- Since:
- Java 17+
- Author:
- Kimi Liu
- See Also:
-
Nested Class Summary
-
Method Summary
Modifier and TypeMethodDescriptiondefault booleancontainsChildNode(K parentKey, K childKey) 判断以该父节点作为根节点的树结构中是否具有指定子节点default booleancontainsParentNode(K key, K parentKey) 获取以指定节点作为叶子节点的树结构,然后确认该树结构中当前节点是否存在指定父节点default Collection<TreeEntry<K, V>> getChildNodes(K key) 获取指定父节点的全部子节点 比如:若存在 a -> b -> c 的关系,此时输入 b 将返回 c,输入 a 将返回 b,cdefault Collection<TreeEntry<K, V>> getDeclaredChildNodes(K key) 获取指定父节点直接关联的子节点 比如:若存在 a -> b -> c 的关系,此时输入 b 将返回 c,输入 a 将返回 bgetDeclaredParentNode(K key) 获取指定节点的直接父节点 比如:若存在 a -> b -> c 的关系,此时输入 a 将返回 null,输入 b 将返回 a,输入 c 将返回 bdefault VgetNodeValue(K key) 获取指定节点的值getParentNode(K key, K parentKey) 获取以指定节点作为叶子节点的树结构,然后获取该树结构中指定节点的指定父节点getRootNode(K key) 获取以指定节点作为叶子节点的树结构,然后获取该树结构的根节点 比如:存在 a -> b -> c 的关系,则输入 a/b/c 都将返回 agetTreeNodes(K key) 获取指定节点所在树结构的全部树节点 比如:存在 a -> b -> c 的关系,则输入 a/b/c 都将返回 a, b, cdefault void为集合中的指定的节点建立父子关系void为集合中的指定的节点建立父子关系添加一个节点,效果等同于putNode(data, node.getValue())若key对应节点不存在,则以传入的键值创建一个新的节点; 若key对应节点存在,则将该节点的值替换为node指定的值;default void批量添加节点,若节点具有父节点或者子节点,则一并在当前实例中引入该关系default <C extends Collection<V>>
voidputAllNode(C values, Function<V, K> keyGenerator, Function<V, K> parentKeyGenerator, boolean ignoreNullNode) 批量添加节点voidputLinkedNodes(K parentKey, K childKey, V childValue) 添加子节点,并为子节点指定父节点: 若parentKey或childKey对应的节点不存在,则会根据键值创建一个对应的节点; 若parentKey或childKey对应的节点存在,则会更新对应节点的值;default voidputLinkedNodes(K parentKey, V parentValue, K childKey, V childValue) 同时添加父子节点: 若parentKey或childKey对应的节点不存在,则会根据键值创建一个对应的节点; 若parentKey或childKey对应的节点存在,则会更新对应节点的值; 该操作等同于:添加一个节点 若key对应节点不存在,则以传入的键值创建一个新的节点; 若key对应节点存在,则将该节点的值替换为node指定的值;voidunlinkNode(K parentKey, K childKey) 若parentKey或childKey对应节点都存在,则移除指定该父节点与其直接关联的指定子节点间的引用关系Methods inherited from interface java.util.Map
clear, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, entrySet, equals, forEach, get, getOrDefault, hashCode, isEmpty, keySet, merge, putIfAbsent, remove, remove, replace, replace, replaceAll, size, values
-
Method Details
-
put
添加一个节点,效果等同于putNode(data, node.getValue())- 若key对应节点不存在,则以传入的键值创建一个新的节点;
- 若key对应节点存在,则将该节点的值替换为
node指定的值;
-
putAll
批量添加节点,若节点具有父节点或者子节点,则一并在当前实例中引入该关系 -
putAllNode
default <C extends Collection<V>> void putAllNode(C values, Function<V, K> keyGenerator, Function<V, K> parentKeyGenerator, boolean ignoreNullNode) 批量添加节点- Type Parameters:
C- 集合类型- Parameters:
values- 要添加的值keyGenerator- 从值中获取key的方法parentKeyGenerator- 从值中获取父节点key的方法ignoreNullNode- 是否获取到的key为null的子节点/父节点
-
putNode
添加一个节点- 若key对应节点不存在,则以传入的键值创建一个新的节点;
- 若key对应节点存在,则将该节点的值替换为
node指定的值;
- Parameters:
key- 节点的keyvalue- 节点的value- Returns:
- 节点,若key已有对应节点,则返回具有旧值的节点,否则返回null
-
putLinkedNodes
同时添加父子节点:- 若
parentKey或childKey对应的节点不存在,则会根据键值创建一个对应的节点; - 若
parentKey或childKey对应的节点存在,则会更新对应节点的值;
putNode(parentKey, parentValue); putNode(childKey, childValue); linkNodes(parentKey, childKey);- Parameters:
parentKey- 父节点的keyparentValue- 父节点的valuechildKey- 子节点的keychildValue- 子节点的值
- 若
-
putLinkedNodes
添加子节点,并为子节点指定父节点:- 若
parentKey或childKey对应的节点不存在,则会根据键值创建一个对应的节点; - 若
parentKey或childKey对应的节点存在,则会更新对应节点的值;
- Parameters:
parentKey- 父节点的keychildKey- 子节点的keychildValue- 子节点的值
- 若
-
linkNodes
为集合中的指定的节点建立父子关系- Parameters:
parentKey- 父节点的keychildKey- 子节点的key
-
linkNodes
为集合中的指定的节点建立父子关系- Parameters:
parentKey- 父节点的keychildKey- 子节点的keyconsumer- 对父节点和子节点的操作,允许为null
-
unlinkNode
若parentKey或childKey对应节点都存在,则移除指定该父节点与其直接关联的指定子节点间的引用关系- Parameters:
parentKey- 父节点的keychildKey- 子节点
-
getTreeNodes
获取指定节点所在树结构的全部树节点 比如:存在 a -> b -> c 的关系,则输入 a/b/c 都将返回 a, b, c- Parameters:
key- 指定节点的key- Returns:
- 节点
-
getRootNode
获取以指定节点作为叶子节点的树结构,然后获取该树结构的根节点 比如:存在 a -> b -> c 的关系,则输入 a/b/c 都将返回 a- Parameters:
key- 指定节点的key- Returns:
- 节点
-
getDeclaredParentNode
获取指定节点的直接父节点 比如:若存在 a -> b -> c 的关系,此时输入 a 将返回 null,输入 b 将返回 a,输入 c 将返回 b- Parameters:
key- 指定节点的key- Returns:
- 节点
-
getParentNode
获取以指定节点作为叶子节点的树结构,然后获取该树结构中指定节点的指定父节点- Parameters:
key- 指定节点的keyparentKey- 指定父节点key- Returns:
- 节点
-
containsParentNode
获取以指定节点作为叶子节点的树结构,然后确认该树结构中当前节点是否存在指定父节点- Parameters:
key- 指定节点的keyparentKey- 指定父节点的key- Returns:
- 是否
-
getNodeValue
获取指定节点的值- Parameters:
key- 节点的key- Returns:
- 节点值,若节点不存在,或节点值为null都将返回null
-
containsChildNode
判断以该父节点作为根节点的树结构中是否具有指定子节点- Parameters:
parentKey- 父节点childKey- 子节点- Returns:
- 是否
-
getDeclaredChildNodes
获取指定父节点直接关联的子节点 比如:若存在 a -> b -> c 的关系,此时输入 b 将返回 c,输入 a 将返回 b- Parameters:
key- data- Returns:
- 节点
-
getChildNodes
获取指定父节点的全部子节点 比如:若存在 a -> b -> c 的关系,此时输入 b 将返回 c,输入 a 将返回 b,c- Parameters:
key- data- Returns:
- 该节点的全部子节点
-