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
        • 主要功能
        • 方法示例
          • 1. Map创建
          • newHashMap()
          • of(key, value)
          • ofKvs(isLinked, keysAndValues)
          • singleton(key, value)
          • 2. Map判断
          • isEmpty(map)
          • isNotEmpty(map)
          • 3. Map转换
          • toListMap(mapList)
          • toMapList(listMap)
          • toCamelCaseMap(map)
          • 4. Map过滤
          • filter(map, predicate)
          • removeNullValue(map)
          • 5. Map排序
          • sort(map)
          • sortByValue(map, isDesc)
          • 6. Map操作
          • renameKey(map, oldKey, newKey)
          • inverse(map)
          • partition(map, size)
          • 7. Map遍历
          • forEach(map, kvConsumer)
          • 8. Map构建器
          • builder()
        • 注意事项
        • 总结
      • MapBuilder
      • MapJoiner
      • MapGetUtil
      • CaseInsensitiveMap
      • CamelCaseMap
      • 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-03
目录

MapUtil

MapUtil是Hutool中用于处理Map的核心工具类,提供了丰富的Map操作方法,包括Map的创建、转换、过滤、排序等功能。

# 主要功能

  • Map创建:快速创建各种类型的Map
  • Map转换:行转列、列转行、驼峰转换等
  • Map过滤:根据条件过滤Map元素
  • Map排序:根据键或值排序
  • Map合并:合并多个Map
  • Map操作:重命名键、移除元素等
  • Map遍历:增强型遍历方法

# 方法示例

# 1. Map创建

# newHashMap()

创建一个新的HashMap。

Map<String, Object> map = MapUtil.newHashMap();
map.put("name", "hutool");
map.put("version", "7.0.0");
// 输出: {name=hutool, version=7.0.0}

# of(key, value)

将单一键值对转换为Map。

Map<String, Integer> map = MapUtil.of("key", 123);
// 输出: {key=123}

# ofKvs(isLinked, keysAndValues)

根据键值对数组创建Map。

Map<String, String> colorMap = MapUtil.ofKvs(false,
    "RED", "#FF0000",
    "GREEN", "#00FF00",
    "BLUE", "#0000FF"
);
// 输出: {RED=#FF0000, GREEN=#00FF00, BLUE=#0000FF}

# singleton(key, value)

创建只包含一个键值对的不可变Map。

Map<String, String> singletonMap = MapUtil.singleton("key", "value");
// 输出: {key=value}

# 2. Map判断

# isEmpty(map)

判断Map是否为空。

Map<String, String> map = MapUtil.newHashMap();
boolean isEmpty = MapUtil.isEmpty(map);
// 输出: true

# isNotEmpty(map)

判断Map是否非空。

Map<String, String> map = MapUtil.of("key", "value");
boolean isNotEmpty = MapUtil.isNotEmpty(map);
// 输出: true

# 3. Map转换

# toListMap(mapList)

行转列,合并相同的键,值合并为列表。

List<Map<String, Integer>> mapList = new ArrayList<>();
mapList.add(MapUtil.of("a", 1, "b", 2));
mapList.add(MapUtil.of("a", 3, "b", 4));
mapList.add(MapUtil.of("a", 5));

Map<String, List<Integer>> listMap = MapUtil.toListMap(mapList);
// 输出: {a=[1, 3, 5], b=[2, 4]}

# toMapList(listMap)

列转行,将Map中值列表分别按照其位置与key组成新的map。

Map<String, List<Integer>> listMap = new HashMap<>();
listMap.put("a", ListUtil.of(1, 2, 3));
listMap.put("b", ListUtil.of(4, 5));

List<Map<String, Integer>> mapList = MapUtil.toMapList(listMap);
// 输出: [{a=1, b=4}, {a=2, b=5}, {a=3}]

# toCamelCaseMap(map)

将已知Map转换为key为驼峰风格的Map。

Map<String, String> map = MapUtil.of("user_name", "hutool", "user_age", "18");
Map<String, String> camelCaseMap = MapUtil.toCamelCaseMap(map);
// 输出: {userName=hutool, userAge=18}

# 4. Map过滤

# filter(map, predicate)

根据条件过滤Map元素。

Map<String, Integer> map = MapUtil.of("a", 1, "b", 2, "c", 3, "d", 4);
Map<String, Integer> filteredMap = MapUtil.filter(map, entry -> entry.getValue() > 2);
// 输出: {c=3, d=4}

# removeNullValue(map)

去除Map中值为null的键值对。

Map<String, Object> map = MapUtil.of("a", 1, "b", null, "c", 3);
Map<String, Object> result = MapUtil.removeNullValue(map);
// 输出: {a=1, c=3}

# 5. Map排序

# sort(map)

排序已有Map,Key有序的Map。

Map<String, Integer> map = MapUtil.of("b", 2, "a", 1, "d", 4, "c", 3);
TreeMap<String, Integer> sortedMap = MapUtil.sort(map);
// 输出: {a=1, b=2, c=3, d=4}

# sortByValue(map, isDesc)

按照值排序,可选是否倒序。

Map<String, Integer> map = MapUtil.of("b", 2, "a", 1, "d", 4, "c", 3);
Map<String, Integer> sortedByValueMap = MapUtil.sortByValue(map, true);
// 输出: {d=4, c=3, b=2, a=1}

# 6. Map操作

# renameKey(map, oldKey, newKey)

重命名键。

Map<String, Integer> map = MapUtil.of("oldKey", 123);
Map<String, Integer> result = MapUtil.renameKey(map, "oldKey", "newKey");
// 输出: {newKey=123}

# inverse(map)

Map的键和值互换。

Map<String, Integer> map = MapUtil.of("a", 1, "b", 2);
Map<Integer, String> inverseMap = MapUtil.inverse(map);
// 输出: {1=a, 2=b}

# partition(map, size)

将一个Map按照固定大小拆分成多个子Map。

Map<String, Integer> map = MapUtil.of("a", 1, "b", 2, "c", 3, "d", 4, "e", 5);
List<Map<String, Integer>> partitions = MapUtil.partition(map, 2);
// 输出: [{a=1, b=2}, {c=3, d=4}, {e=5}]

# 7. Map遍历

# forEach(map, kvConsumer)

增强型遍历,支持索引。

Map<String, Integer> map = MapUtil.of("a", 1, "b", 2, "c", 3);
MapUtil.forEach(map, (index, key, value) -> {
    Console.log(index + ": " + key + "=" + value);
});
// 输出:
// 0: a=1
// 1: b=2
// 2: c=3

# 8. Map构建器

# builder()

创建Map构建器,用于链式创建Map。

Map<String, Object> map = MapUtil.builder()
    .put("name", "hutool")
    .put("version", "7.0.0")
    .put("author", "looly")
    .build();
// 输出: {name=hutool, version=7.0.0, author=looly}

# 注意事项

  1. 线程安全:MapUtil中的方法本身是线程安全的,但返回的Map对象(如HashMap)默认不是线程安全的。如果需要线程安全的Map,请使用Collections.synchronizedMap()或ConcurrentHashMap。

  2. 空指针处理:大部分方法都会处理null值,不会抛出NullPointerException,但仍需注意传入null参数的情况。

  3. 性能考虑:对于大型Map,某些操作(如排序、过滤)可能会消耗较多资源,建议根据实际情况选择合适的方法。

  4. 不可变Map:使用singleton()、empty()等方法创建的Map是不可变的,尝试修改会抛出UnsupportedOperationException。

# 总结

MapUtil提供了丰富的Map操作方法,大大简化了Java中Map的使用。无论是简单的Map创建,还是复杂的Map转换、过滤、排序,MapUtil都能提供简洁高效的解决方案。通过使用MapUtil,可以减少大量重复代码,提高开发效率。

简介
MapBuilder

← 简介 MapBuilder→

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