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
      • BiMap
      • FixedLinkedHashMap
      • ForestMap
      • Dict
        • 功能介绍
        • 主要特性
        • 适用场景
        • 使用示例
          • 示例1:基本用法
          • 示例2:链式调用
          • 示例3:设置默认值
          • 示例4:获取集合类型值
          • 示例5:与普通Map互转
        • 注意事项
        • 方法列表
      • 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
目录

Dict

# 功能介绍

Dict是Hutool中提供的字典Map实现,是对普通Map的增强,提供了更便捷的方法来获取不同类型的值。它支持链式调用、自动类型转换、默认值处理等功能,大大简化了Map的使用,特别适合在频繁获取不同类型值的场景中使用。

# 主要特性

  • 支持链式调用,简化Map操作
  • 支持自动类型转换,直接获取所需类型的值
  • 支持设置默认值,避免空指针异常
  • 支持获取基本类型及其包装类型
  • 支持获取日期、时间类型
  • 支持获取集合类型(List、Set、Map等)
  • 基于HashMap实现,性能优异
  • 支持null键和null值
  • 线程不安全,建议在单线程环境下使用

# 适用场景

  1. 需要频繁获取不同类型值的场景
  2. 需要链式操作Map的场景
  3. 需要处理可能为空值的场景
  4. 需要自动转换值类型的场景
  5. Web开发中处理请求参数
  6. 数据传输对象(DTO)的替代方案
  7. 配置信息的存储和获取

# 使用示例

# 示例1:基本用法

// 创建Dict
Dict dict = Dict.create()
    .set("name", "hutool")
    .set("version", "7.0.0")
    .set("author", "looly")
    .set("stars", 10000)
    .set("isActive", true);

// 获取字符串值
String name = dict.getStr("name");
// 输出: hutool

// 获取整数值
int version = dict.getInt("version");
// 输出: 700

// 获取长整型值
long stars = dict.getLong("stars");
// 输出: 10000

// 获取布尔值
boolean isActive = dict.getBool("isActive");
// 输出: true

# 示例2:链式调用

// 创建Dict并链式设置值
Dict dict = Dict.create()
    .set("name", "hutool")
    .set("version", "7.0.0")
    .set("author", "looly");

// 链式获取值并转换类型
String info = dict.getStr("name") + " v" + dict.getInt("version") + " by " + dict.getStr("author");
// 输出: hutool v700 by looly

# 示例3:设置默认值

Dict dict = Dict.create()
    .set("name", "hutool")
    .set("version", "7.0.0");

// 获取存在的键,返回对应值
String name = dict.getStr("name", "default");
// 输出: hutool

// 获取不存在的键,返回默认值
String author = dict.getStr("author", "unknown");
// 输出: unknown

// 获取不存在的整型值,返回默认值
int downloads = dict.getInt("downloads", 0);
// 输出: 0

# 示例4:获取集合类型值

Dict dict = Dict.create()
    .set("tags", ListUtil.of("java", "tool", "util"))
    .set("contributors", SetUtil.of("looly", "张三", "李四"))
    .set("versions", MapUtil.of("current", "7.0.0", "previous", "6.0.0"));

// 获取List类型值
List<String> tags = dict.getList("tags", String.class);
// 输出: [java, tool, util]

// 获取Set类型值
Set<String> contributors = dict.getSet("contributors", String.class);
// 输出: [looly, 张三, 李四]

// 获取Map类型值
Map<String, String> versions = dict.getMap("versions", String.class, String.class);
// 输出: {current=7.0.0, previous=6.0.0}

# 示例5:与普通Map互转

// Dict转普通Map
Dict dict = Dict.create()
    .set("name", "hutool")
    .set("version", "7.0.0");
Map<String, Object> map = dict.toMap();

// 普通Map转Dict
Map<String, Object> normalMap = MapUtil.of("name", "hutool", "version", "7.0.0");
Dict dict2 = Dict.parse(normalMap);

// 获取值
String name = dict2.getStr("name");
// 输出: hutool

# 注意事项

  1. Dict是线程不安全的,在多线程环境下使用需要额外同步
  2. 自动类型转换可能会失败,特别是对于复杂类型转换
  3. 支持null值,但获取基本类型时,null值会转换为对应类型的默认值(如0、false等)
  4. 性能与HashMap相当,适合大多数场景
  5. 链式调用时,返回的是当前Dict对象,便于连续操作
  6. Dict.create()是创建Dict的推荐方式,比直接new Dict()更简洁

# 方法列表

Dict继承自HashMap,除了支持所有Map接口方法外,还提供了以下特有方法:

方法名 描述 参数 返回值
create() 创建Dict实例 无 Dict
parse(Map<?, ?> map) 将普通Map转换为Dict map: 普通Map Dict
set(K key, V value) 设置键值对,支持链式调用 key: 键, value: 值 Dict
getStr(String key) 获取字符串值 key: 键 String
getStr(String key, String defaultValue) 获取字符串值,带默认值 key: 键, defaultValue: 默认值 String
getInt(String key) 获取整数值 key: 键 int
getInt(String key, int defaultValue) 获取整数值,带默认值 key: 键, defaultValue: 默认值 int
getLong(String key) 获取长整型值 key: 键 long
getLong(String key, long defaultValue) 获取长整型值,带默认值 key: 键, defaultValue: 默认值 long
getDouble(String key) 获取双精度浮点型值 key: 键 double
getDouble(String key, double defaultValue) 获取双精度浮点型值,带默认值 key: 键, defaultValue: 默认值 double
getBool(String key) 获取布尔值 key: 键 boolean
getBool(String key, boolean defaultValue) 获取布尔值,带默认值 key: 键, defaultValue: 默认值 boolean
getDate(String key) 获取日期值 key: 键 Date
getDate(String key, Date defaultValue) 获取日期值,带默认值 key: 键, defaultValue: 默认值 Date
getList(String key, Class elementType) 获取List类型值 key: 键, elementType: 元素类型 List
getSet(String key, Class elementType) 获取Set类型值 key: 键, elementType: 元素类型 Set
getMap(String key, Class keyType, Class valueType) 获取Map类型值 key: 键, keyType: 键类型, valueType: 值类型 Map<K, V>
toMap() 转换为普通Map 无 Map<String, Object>
ForestMap
MultiValueMap

← ForestMap MultiValueMap→

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