简介
# 📚简介
Map模块(cn.hutool.v7.core.map)是 Hutool 提供的 Map 扩展模块,封装了各种增强的 Map 实现和工具类,扩展了 Java 标准库的 Map 功能,提供了更多便捷的 Map 操作和实现。
# JDK Map 的局限
Java 标准库的 Map 实现虽然强大,但在某些方面仍有局限:
- 缺少大小写不敏感的 Map:标准 Map 对键的大小写敏感,无法处理大小写不敏感的场景
- 缺少驼峰命名 Map:无法自动处理驼峰命名和下划线命名之间的转换
- 缺少双向 Map:无法根据值快速查找键
- 缺少多值 Map:标准 Map 只能存储一个值对应一个键,无法存储多个值
- 缺少引用 Map:无法根据引用类型自动清理过期条目
- 缺少固定大小 Map:无法创建固定大小的 Map,自动移除最旧条目
- 缺少便捷的 Map 工具类:缺少一些常用的 Map 操作工具方法
# Hutool Map 模块的优势
Hutool 的 Map 模块通过提供各种增强的 Map 实现和工具类,解决了 JDK 原生 Map 的局限:
- 丰富的 Map 实现:提供了多种增强的 Map 实现,如大小写不敏感 Map、驼峰命名 Map、双向 Map 等
- 多值 Map 支持:提供了 MultiValueMap 接口和多种实现,支持一个键对应多个值
- 引用 Map 支持:提供了基于软引用、弱引用的 Map 实现,自动清理过期条目
- 固定大小 Map:提供了固定大小的 Map 实现,自动移除最旧条目
- 便捷的 Map 工具类:提供了 MapUtil 工具类,包含丰富的 Map 操作方法
- 双向 Map:提供了 BiMap 实现,支持根据值快速查找键
- 支持并发:提供了并发安全的 Map 实现
- 支持树形结构:提供了 ForestMap 实现,支持树形结构的 Map
# 核心功能
增强的 Map 实现:
- 大小写不敏感的 Map
- 驼峰命名的 Map
- 双向 Map
- 固定大小的 Map
- 树形结构的 Map
多值 Map:
- 支持一个键对应多个值的 Map
- 支持 List、Set 等多种值类型
引用 Map:
- 基于软引用的 Map
- 基于弱引用的 Map
- 基于弱键的 Map
并发 Map:
- 并发安全的 LinkedHashMap
- 支持权重的并发 Map
Map 工具类:
- Map 的创建、合并、转换等操作
- Map 与 Bean 之间的转换
- Map 的遍历、过滤、排序等操作
表格结构:
- 支持行列结构的 Table 实现
- 支持多行多列的 TripleTable
# 主要类结构
核心工具类:
MapUtil:Map 操作核心工具类,提供 Map 的创建、合并、转换等功能MapBuilder:Map 构建器,用于便捷地创建 MapMapJoiner:Map 连接工具,用于将 Map 转换为字符串MapGetUtil:Map 获取工具,提供各种 Map 值获取方法
增强的 Map 实现:
CaseInsensitiveMap:大小写不敏感的 MapCamelCaseMap:驼峰命名的 MapBiMap:双向 Map,支持根据值查找键FixedLinkedHashMap:固定大小的 LinkedHashMapForestMap:树形结构的 MapDict:字典 Map,提供便捷的键值操作
多值 Map:
MultiValueMap:多值 Map 接口ListValueMap:值为 List 的多值 MapSetValueMap:值为 Set 的多值 MapTable:表格结构接口
引用 Map:
SoftConcurrentMap:基于软引用的并发 MapWeakConcurrentMap:基于弱引用的并发 MapWeakKeyConcurrentMap:基于弱键的并发 Map
并发 Map:
ConcurrentLinkedHashMap:并发安全的 LinkedHashMap
# 🔧 主要特性
- 增强的功能:提供了更多增强的 Map 功能,满足各种特殊场景
- 便捷的操作:提供了丰富的 Map 操作工具方法,简化 Map 操作
- 高性能:所有 Map 实现都经过性能优化,适合高并发场景
- 线程安全:提供了多种并发安全的 Map 实现
- 易于扩展:设计了良好的接口和抽象类,方便扩展
通过 Hutool 的 Map 模块,可以更方便地使用各种增强的 Map 实现,满足各种特殊场景的需求,同时简化 Map 操作,提高开发效率。