精心整理了最新的面试资料和简历模板,有需要的可以自行获取
Hutool ListUtil工具类详解
一、工具类简介
Hutool的ListUtil
是一个针对Java List
集合的增强工具类,封装了集合操作中的常见场景,能够简化代码并提升开发效率。适用于List的创建、分页、过滤、转换等高频操作,有效减少样板代码。
二、核心功能及代码示例
1. 快速创建集合
// 创建ArrayList
List<String> list1 = ListUtil.toList("A", "B", "C");
// 创建不可变集合(JDK9+风格)
List<String> unmodifiableList = ListUtil.of("Java", "Hutool", "Spring");
// 创建分页后的子集(自动计算起止索引)
List<Integer> fullList = IntUtil.range(1, 100);
List<Integer> page = ListUtil.page(2, 10, fullList); // 第3页,每页10条
2. 集合操作
// 拆分集合(每3个元素一组)
List<List<String>> splitGroups = ListUtil.split(list1, 3);
// 元素过滤(保留长度>2的字符串)
List<String> filtered = ListUtil.filter(list1, s -> s.length() > 2);
// 集合去重(根据对象属性)
List<User> users = ...;
List<User> uniqueUsers = ListUtil.distinct(users, User::getId);
// 集合排序(自然排序/自定义比较器)
ListUtil.sortByProperty(users, "age"); // 按年龄升序
ListUtil.sort(users, Comparator.comparing(User::getCreateTime).reversed());
3. 数据转换
// List转Map
Map<Long, User> idUserMap = ListUtil.toMap(users, User::getId);
// 提取对象属性集合
List<Long> ids = ListUtil.getFieldValues(users, User::getId);
// 转换为其他集合类型
Vector<String> vector = ListUtil.toVector(list1);
4. 特殊集合处理
// 空集合安全处理
List<String> safeList = ListUtil.emptyIfNull(null); // 返回空集合
// 批量修改元素
ListUtil.replaceAll(list1, str -> str + "_suffix");
// 并行流处理(需注意线程安全)
ListUtil.parallelForEach(users, user -> process(user));
三、典型应用场景
场景1:数据库查询分页
public PageResult<User> queryUsers(int pageNo, int pageSize) {
List<User> allUsers = userDao.findAll();
List<User> pageList = ListUtil.page(pageNo-1, pageSize, allUsers);
return new PageResult<>(pageList, allUsers.size());
}
场景2:DTO/VO转换
public List<UserVO> convertToVO(List<UserDTO> dtos) {
return ListUtil.map(dtos, dto -> {
UserVO vo = new UserVO();
BeanUtil.copyProperties(dto, vo);
vo.setFullName(dto.getFirstName() + " " + dto.getLastName());
return vo;
});
}
四、注意事项
- 版本兼容性:部分方法(如
split()
)需Hutool 5.7.3+版本 - 空指针防护:
emptyIfNull
可防御NPE,但多数方法不自动处理null元素 - 并行流风险:使用
parallelForEach
时注意共享变量的线程安全性 - 性能考量:大数据量分页建议使用数据库分页,而非内存分页
五、总结
ListUtil
通过封装高频操作,可使集合处理代码更简洁高效。但需注意:
- 根据业务场景选择合适方法
- 大数据量时优先考虑数据库/流式处理
- 结合Hutool其他工具类(如
CollUtil
)使用效果更佳
建议通过查看官方文档获取最新功能信息。
扩展建议:
- 对于复杂集合操作,可结合Stream API使用
- 需要集合运算时,可配合
CollUtil
进行交/并/补集操作 - 处理Map结构时可使用
MapUtil
工具类
可根据实际项目需求,选择性地将Hutool引入项目依赖(注意版本管理)。