Hutool Hutool
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
  • 快速入门

  • 核心(hutool-core)

    • AI(Hutool-ai)

    • 注解(annotation)

    • 数组(array)

    • JavaBean(bean)

    • 缓存(cache)

    • 类加载器(classloader)

    • 编码解码(codec)

    • 集合(collection)

    • 比较器(comparator)

    • 压缩(compress)

    • 类型转换(convert)

    • 数据(data)

    • 日期时间(date)

    • 异常(exception)

    • 函数(func)

    • IO流(io)

    • 语言特性(lang)

    • Map(map)

      • 简介
      • MapUtil
      • MapBuilder
      • MapJoiner
      • MapGetUtil
      • CaseInsensitiveMap
      • CamelCaseMap
        • 功能介绍
        • 主要特性
        • 适用场景
        • 使用示例
          • 示例1:基本用法
          • 示例2:判断键是否存在
          • 示例3:与MapUtil结合使用
          • 示例4:转换已有Map
        • 注意事项
        • 方法列表
      • BiMap
      • FixedLinkedHashMap
      • ForestMap
      • Dict
      • MultiValueMap
      • ListValueMap
      • SetValueMap
      • Table
      • SoftConcurrentMap
      • WeakConcurrentMap
      • WeakKeyConcurrentMap
      • ConcurrentLinkedHashMap
    • 数字数学(math)

    • 网络(net)

    • 对象池(pool)

    • 反射(reflect)

    • 正则(regex)

    • 服务提供(spi)

    • 聚合操作(stream)

    • 字符串文本(text)

    • 并发和线程(thread)

    • 树结构(tree)

    • 工具集合(util)

    • XML操作(xml)

  • 定时任务(hutool-cron)

  • 加密(hutool-crypto)

  • 数据库(hutool-db)

  • 扩展(hutool-extra)

  • HTTP(hutool-http)

  • 日志(hutool-log)

  • 配置文件(hutool-setting)

  • JSON(hutool-json)

  • Office办公(hutool-poi)

  • 套接字(hutool-socket)

  • GUI(hutool-swing)

  • 指南
  • 核心(hutool-core)
  • Map(map)
Hutool
2026-01-19
目录

CamelCaseMap

# 功能介绍

CamelCaseMap是Hutool中提供的驼峰命名Map实现,它会自动将所有键转换为驼峰命名格式。这意味着当添加键值对时,无论使用什么命名格式(如下划线命名、连字符命名等),都会被自动转换为驼峰命名,方便在Java代码中使用。

# 主要特性

  • 自动将所有键转换为驼峰命名格式
  • 支持下划线命名、连字符命名等多种格式转换
  • 基于HashMap实现,性能优异
  • 支持所有Map接口方法
  • 支持null键和null值
  • 线程不安全,建议在单线程环境下使用

# 适用场景

  1. 需要处理不同命名格式的键,统一转换为驼峰命名
  2. 从数据库查询结果转换为Java对象时使用
  3. 处理外部API返回的不同命名格式的JSON数据
  4. 需要统一Map键命名风格的场景
  5. 开发中需要遵循Java命名规范的场景

# 使用示例

# 示例1:基本用法

// 创建CamelCaseMap
CamelCaseMap<String, Object> map = new CamelCaseMap<>();

// 添加不同命名格式的键值对
map.put("user_name", "hutool");
map.put("user-age", 18);
map.put("userEmail", "hutool@example.com");

// 获取值,使用驼峰命名键
String userName = (String) map.get("userName");
// 输出: hutool

Integer userAge = (Integer) map.get("userAge");
// 输出: 18

String userEmail = (String) map.get("userEmail");
// 输出: hutool@example.com

// 遍历Map,所有键都是驼峰命名
map.forEach((key, value) -> {
    Console.log(key + "=" + value);
});
// 输出:
// userName=hutool
// userAge=18
// userEmail=hutool@example.com

# 示例2:判断键是否存在

CamelCaseMap<String, Object> map = new CamelCaseMap<>();
map.put("user_name", "hutool");

// 判断键是否存在,使用不同命名格式
boolean contains1 = map.containsKey("userName");
// 输出: true

boolean contains2 = map.containsKey("user_name");
// 输出: true

boolean contains3 = map.containsKey("USER-NAME");
// 输出: true

boolean contains4 = map.containsKey("userPhone");
// 输出: false

# 示例3:与MapUtil结合使用

// 使用MapUtil创建CamelCaseMap
Map<String, Object> map = MapUtil.newCamelCaseMap();
map.put("user_name", "hutool");
map.put("user_age", 18);

// 获取值,使用驼峰命名键
String userName = (String) map.get("userName");
// 输出: hutool

Integer userAge = (Integer) map.get("userAge");
// 输出: 18

# 示例4:转换已有Map

// 创建普通Map
Map<String, Object> normalMap = MapUtil.of(
    "user_name", "hutool",
    "user_age", 18,
    "user_email", "hutool@example.com"
);

// 转换为CamelCaseMap
Map<String, Object> camelCaseMap = MapUtil.toCamelCaseMap(normalMap);

// 获取值,使用驼峰命名键
String userName = (String) camelCaseMap.get("userName");
// 输出: hutool

# 注意事项

  1. CamelCaseMap是线程不安全的,在多线程环境下使用需要额外同步
  2. 所有键都会被转换为驼峰命名,原始命名格式会丢失
  3. 转换规则:下划线、连字符等分隔符后的第一个字符大写,其他字符小写
  4. 性能与HashMap相当,适合大多数场景
  5. 支持null键,但null键不进行驼峰转换
  6. 不支持重复键,转换后相同的键会被覆盖

# 方法列表

CamelCaseMap继承自HashMap,因此支持所有Map接口方法,主要包括:

方法名 描述 参数 返回值
put(K key, V value) 添加键值对,键自动转换为驼峰命名 key: 键, value: 值 V
get(Object key) 获取值,键自动转换为驼峰命名 key: 键 V
containsKey(Object key) 判断键是否存在,键自动转换为驼峰命名 key: 键 boolean
remove(Object key) 移除键值对,键自动转换为驼峰命名 key: 键 V
size() 获取Map大小 无 int
isEmpty() 判断Map是否为空 无 boolean
clear() 清空Map 无 void
keySet() 获取键集合,所有键都是驼峰命名 无 Set
values() 获取值集合 无 Collection
entrySet() 获取键值对集合,所有键都是驼峰命名 无 Set<Map.Entry<K, V>>
CaseInsensitiveMap
BiMap

← CaseInsensitiveMap BiMap→

Theme by Vdoing | Copyright © 2025-2026 Hutool | Apache-2.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式