Hutool CollUtil 教程

Hutool 提供了强大的集合工具类 CollUtil ,位于 cn.hutool.core.collection.CollUtil 包下。以下是常用功能:

1. 集合判空/非空

java 复制代码
// 判断是否为null或空集合
CollUtil.isEmpty(list);     // true/false
CollUtil.isNotEmpty(list);  // 反向

// 判断是否为null
CollUtil.isNull(list);
CollUtil.isNotNull(list);

2. 创建集合

java 复制代码
// 创建ArrayList
List<String> list = CollUtil.newArrayList("a", "b", "c");

// 创建HashSet
Set<String> set = CollUtil.newHashSet("a", "b", "c");

// 创建ConcurrentHashMap
Map<String, String> map = CollUtil.newConcurrentHashMap();

// 创建阻塞队列
BlockingQueue<String> queue = CollUtil.newBlockingQueue(10);

3. 集合交并差操作

java 复制代码
List<String> list1 = CollUtil.newArrayList("a", "b", "c");
List<String> list2 = CollUtil.newArrayList("b", "c", "d");

// 交集 [b, c]
Collection<String> intersection = CollUtil.intersection(list1, list2);

// 并集 [a, b, c, d]
Collection<String> union = CollUtil.union(list1, list2);

// 差集(list1中有但list2中没有)[a]
Collection<String> subtract = CollUtil.subtract(list1, list2);

// 补集(对称差)[a, d]
Collection<String> disjunction = CollUtil.disjunction(list1, list2);

4. 分组和转换

java 复制代码
// 按条件分组
List<User> users = CollUtil.newArrayList(user1, user2, user3);
Map<String, List<User>> groupMap = CollUtil.groupBy(users, User::getDeptId);

// 集合转Map(key为某个属性)
Map<Long, User> userMap = CollUtil.toMap(users, User::getId, User::getName);

// 集合转数组
String[] array = CollUtil.toArray(list, String.class);

5. 安全获取元素

java 复制代码
// 安全获取第N个元素(支持负索引,从后往前)
String first = CollUtil.get(list, 0);
String last = CollUtil.get(list, -1);

// 获取第一个非null元素
String result = CollUtil.getFirstNoneNull(list);

// 获取最后一个元素
String last = CollUtil.last(list);

6. 集合排序和去重

java 复制代码
// 去重(保持顺序)
List<String> distinct = CollUtil.distinct(list);

// 反向排序
List<String> reverse = CollUtil.reverse(list);

// 根据字段排序
CollUtil.sortByProperty(userList, "age");      // 正序
CollUtil.sortByProperty(userList, "age", true); // 降序

7. 集合统计

java 复制代码
// 判断是否包含所有元素
boolean containsAll = CollUtil.containsAll(list1, list2);

// 获取元素出现次数
Map<String, Integer> countMap = CollUtil.countMap(list);

// 分组并计数
Map<String, Long> groupCount = CollUtil.groupByCount(users, User::getDeptId);

8. 其他实用方法

java 复制代码
// 两个列表合并
List<String> merged = CollUtil.addAll(list1, list2);

// 分页(每页10条)
List<List<String>> pages = CollUtil.splitList(list, 10);

// 过滤(保留符合条件的元素)
CollUtil.filter(list, t -> t.length() > 2);

// 转为字符串(分隔符)
String str = CollUtil.join(list, ",");  // "a,b,c"

// 移除null元素
CollUtil.removeNull(list);

9. 迭代器工具

java 复制代码
// 遍历迭代器
Iterator<String> it = list.iterator();
CollUtil.forEach(it, (index, value) -> {
    System.out.println(index + ":" + value);
});

// 将迭代器转为List
List<String> newList = CollUtil.toList(it);

推荐用法:

  • 日常判空用 CollUtil.isNotEmpty()

  • 创建集合用 CollUtil.newArrayList() 等,比 new ArrayList<>() 更简洁

  • 集合操作优先使用 CollUtil 而非手动循环

相关推荐
镜子AI1 分钟前
教培机构多模态内容跨模态检索系统:基于CLIP的统一表征与图文混合召回算法
人工智能·python·算法·机器学习
落魄大学生之流水线上谋生计2 分钟前
Selenium 入门到实战:用 Python 写出稳定的浏览器自动化
python·selenium·自动化
会编程的吕洞宾3 分钟前
Spring AI 2.0 会话记忆实战,让 AI 助手记住每一次对话
java·人工智能·spring
阡陌数智5 分钟前
RAG 系统的召回退化:向量库、分块、重排全链路问题排查与优化实践
开发语言·人工智能·语言模型·自然语言处理·推荐算法
小宋10217 分钟前
Agent 工具升级如何不破坏线上:Tool Schema 版本兼容与契约测试
java·人工智能·后端·spring
汤米粥10 分钟前
后端开发主流技术方案
java·python·golang·php·nodejs·后端开发
geovindu13 分钟前
rust: Flyweight Pattern
开发语言·后端·设计模式·rust·享元模式·结构型模式
我的xiaodoujiao14 分钟前
Django 基础知识详细图文教程 13-Django 模型定义与使用 3
数据库·后端·python·测试工具·oracle·django
Helix25015 分钟前
2026编程入门指南:零基础如何科学选择第一门编程语言?
java·c语言·javascript·零基础·编程语言·python入门·编程就业
EatFan16 分钟前
2026 后端 AI 集成三条落地路径:Spring AI 2.0、MCP 协议与旁路服务怎么选
java·人工智能·spring boot·spring·大模型·spring ai·mcp