Hutool ListUtil工具类详解

精心整理了最新的面试资料和简历模板,有需要的可以自行获取

点击前往百度网盘获取
点击前往夸克网盘获取


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;
    });
}

四、注意事项

  1. 版本兼容性:部分方法(如split())需Hutool 5.7.3+版本
  2. 空指针防护emptyIfNull可防御NPE,但多数方法不自动处理null元素
  3. 并行流风险:使用parallelForEach时注意共享变量的线程安全性
  4. 性能考量:大数据量分页建议使用数据库分页,而非内存分页

五、总结

ListUtil通过封装高频操作,可使集合处理代码更简洁高效。但需注意:

  • 根据业务场景选择合适方法
  • 大数据量时优先考虑数据库/流式处理
  • 结合Hutool其他工具类(如CollUtil)使用效果更佳

建议通过查看官方文档获取最新功能信息。


扩展建议

  • 对于复杂集合操作,可结合Stream API使用
  • 需要集合运算时,可配合CollUtil进行交/并/补集操作
  • 处理Map结构时可使用MapUtil工具类

可根据实际项目需求,选择性地将Hutool引入项目依赖(注意版本管理)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘵奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值