MapBuilder
# 功能介绍
MapBuilder是Hutool中用于便捷创建Map的构建器类,提供了链式调用的方式来创建和初始化Map对象。它支持多种Map实现类型,并允许在创建过程中灵活添加键值对。
# 主要特性
- 支持链式调用,简化Map创建和初始化
- 支持多种Map实现(HashMap、LinkedHashMap、TreeMap等)
- 支持批量添加键值对
- 支持构建不可变Map
- 支持自定义Map工厂
# 适用场景
- 需要创建并初始化多个键值对的Map
- 希望通过链式调用简化代码
- 需要创建特定类型的Map(如有序Map、不可变Map)
- 需要批量添加键值对到Map中
# 使用示例
# 示例1:基本用法
// 创建HashMap并添加键值对
Map<String, Object> map = MapBuilder.create()
.put("name", "hutool")
.put("version", "7.0.0")
.put("author", "looly")
.build();
// 输出: {name=hutool, version=7.0.0, author=looly}
# 示例2:创建特定类型的Map
// 创建LinkedHashMap(保持插入顺序)
Map<String, Object> linkedMap = MapBuilder.createLinkedHashMap()
.put("b", 2)
.put("a", 1)
.put("c", 3)
.build();
// 输出: {b=2, a=1, c=3}(保持插入顺序)
// 创建TreeMap(按键排序)
Map<String, Object> treeMap = MapBuilder.createTreeMap()
.put("b", 2)
.put("a", 1)
.put("c", 3)
.build();
// 输出: {a=1, b=2, c=3}(按键排序)
# 示例3:构建不可变Map
// 创建不可变Map
Map<String, Object> immutableMap = MapBuilder.create()
.put("name", "hutool")
.put("version", "7.0.0")
.buildImmutable();
// immutableMap.put("author", "looly"); // 会抛出UnsupportedOperationException
# 示例4:批量添加键值对
// 批量添加键值对
Map<String, Object> map = MapBuilder.create()
.putAll(Map.of("name", "hutool", "version", "7.0.0"))
.put("author", "looly")
.build();
// 输出: {name=hutool, version=7.0.0, author=looly}
# 注意事项
- MapBuilder是线程不安全的,不建议在多线程环境下使用
- 构建不可变Map后,尝试修改会抛出UnsupportedOperationException
- 默认情况下,MapBuilder创建的是HashMap实例
- 链式调用的顺序会影响Map中键值对的插入顺序(对于LinkedHashMap)
# 方法列表
| 方法名 | 描述 | 参数 | 返回值 |
|---|---|---|---|
| create() | 创建默认的HashMap构建器 | 无 | MapBuilder<K, V> |
| create(Class<? extends Map<K, V>> mapClass) | 创建指定类型的Map构建器 | mapClass: Map类型 | MapBuilder<K, V> |
| create(Map<K, V> map) | 使用已有Map创建构建器 | map: 已有Map | MapBuilder<K, V> |
| createHashMap() | 创建HashMap构建器 | 无 | MapBuilder<K, V> |
| createLinkedHashMap() | 创建LinkedHashMap构建器 | 无 | MapBuilder<K, V> |
| createTreeMap() | 创建TreeMap构建器 | 无 | MapBuilder<K, V> |
| put(K key, V value) | 添加键值对 | key: 键, value: 值 | MapBuilder<K, V> |
| putAll(Map<? extends K, ? extends V> map) | 批量添加键值对 | map: 键值对集合 | MapBuilder<K, V> |
| build() | 构建Map | 无 | Map<K, V> |
| buildImmutable() | 构建不可变Map | 无 | Map<K, V> |