Package org.aoju.bus.core.map
package org.aoju.bus.core.map
Map相关封装,提供特殊Map实现以及列表类型值的Map实现
- Since:
- Java 17+
- Author:
- Kimi Liu
-
ClassDescriptionAbstractCollValueMap<K,
V> 值作为集合的Map实现,通过调用putValue可以在相同key时加入多个值,多个值用集合表示AbstractEntry<K,V> 抽象的Map.Entry实现,来自Guava 实现了默认的AbstractEntry.equals(Object)、AbstractEntry.hashCode()、AbstractEntry.toString()方法 默认AbstractEntry.setValue(Object)抛出异常AbstractTable<R,C, V> CamelCaseLinkedMap<K,V> 驼峰Key风格的LinkedHashMap 对KEY转换为驼峰,get("int_value")和get("intValue")获得的值相同,put进入的值也会被覆盖CamelCaseMap<K,V> 驼峰Key风格的Map 对KEY转换为驼峰,get("int_value")和get("intValue")获得的值相同,put进入的值也会被覆盖忽略大小写的LinkedHashMap 对KEY忽略大小写,get("Value")和get("value")获得的值相同,put进入的值也会被覆盖CaseInsensitiveMap<K,V> 忽略大小写的Map 对KEY忽略大小写,get("Value")和get("value")获得的值相同,put进入的值也会被覆盖忽略大小写的TreeMap对KEY忽略大小写,get("Value")和get("value")获得的值相同,put进入的值也会被覆盖CollectionValueMap<K,V> MultiValueMap的通用实现,可视为值为Collection集合的Map集合 构建时指定一个工厂方法用于生成原始的Map集合,然后再指定一个工厂方法用于生成自定义类型的值集合 当调用MultiValueMap中格式为“putXXX”的方法时,将会为key创建值集合,并将key相同的值追加到集合中CustomKeyMap<K,V> 自定义键的Map,默认HashMap实现字典对象,扩充了HashMap中的方法DuplexingMap<K,V> 双向Map 互换键值对不检查值是否有重复,如果有则后加入的元素替换先加入的元素 值的顺序在HashMap中不确定,所以谁覆盖谁也不确定,在有序的Map中按照先后顺序覆盖,保留最后的值 它与TableMap的区别是,BiMap维护两个Map实现高效的正向和反向查找FixedLinkedHashMap<K,V> 固定大小的LinkedHashMap实现 注意此类非线程安全,由于LinkedHashMap.get(Object)操作会修改链表的顺序结构,因此也不可以使用读写锁ForestMap<K,V> 基于多个TreeEntry构成的、彼此平行的树结构构成的森林集合。FuncKeyMap<K,V> 自定义函数Key风格的MapFuncMap<K,V> 自定义键值函数风格的MapGraphMap<T>支持处理无向图结构的Map,本质上是基于SetValueMap实现的邻接表LinkedForestMap<K,V> ForestMap的基本实现LinkedForestMap.EntryNodeWrapper<K,V, N extends TreeEntry<K, V>> Map.Entry包装类树节点ListValueMap<K,V> 值作为集合List的Map实现,通过调用putValue可以在相同key时加入多个值,多个值用集合表示MapBuilder<K,V> Map创建类Map拼接器,可以拼接包括Map、Entry列表等Map代理,提供各种getXXX方法,并提供默认值支持MapWrapper<K,V> Map包装类,通过包装一个已有Map实现特定功能 例如自定义Key的规则或Value规则MultiValueMap<K,V> ReferenceMap<K,V> 线程安全的ReferenceMap实现 参考:jdk.management.resource.internal.WeakKeyConcurrentHashMapRowKeyTable<R,C, V> 将行的键作为主键的Table实现 此结构为: 行=(列=值)SafeHashMap<K,V> 安全的ConcurrentHashMap实现 此类用于解决在JDK8中调用ConcurrentHashMap.computeIfAbsent(Object, Function)可能造成的死循环问题SetValueMap<K,V> 值作为集合Set(LinkedHashSet)的Map实现,通过调用putValue可以在相同key时加入多个值,多个值用集合表示Table<R,C, V> 表格数据结构定义 此结构类似于Guava的Table接口,使用两个键映射到一个值,类似于表格结构Table.Cell<R,C, V> 单元格,用于表示一个单元格的行、列和值TableMap<K,V> 无重复键的MapTolerantMap<K,V> 提供默认值的MapTransitionMap<K,V> 自定义键和值转换的的Map 继承此类后,通过实现TransitionMap.customKey(Object)和TransitionMap.customValue(Object),按照给定规则加入到map或获取值。TreeEntry<K,V> 允许拥有一个父节点与多个子节点的Map.Entry实现, 表示一个以key作为唯一标识,并且可以挂载一个对应值的树节点, 提供一些基于该节点对其所在树结构进行访问的方法WeakMap<K,V> 线程安全的WeakMap实现 参考:jdk.management.resource.internal.WeakKeyConcurrentHashMap