SpringBoot 内置 CollectionUtil:实战用法速览,告别空指针!

📌 核心实用功能

CollectionUtil 是 SpringBoot 中超实用的集合工具类(spring-core 包自带),不用额外引入依赖,就能轻松搞定集合判空、转换、筛选等高频场景,今天就用🌰带你吃透这些实用功能!

✅ 判空:isEmpty/isNotEmpty(最常用)

✅转换:arrayToList(数组转集合)

✅ 合并:mergeArrayIntoCollection(集合 + 数组合并)

✅ 匹配:contains(元素存在判断)

✅兜底:emptyIfNull(避免 Null 返回)

📌 实战例子

1. 集合判空(最常用❗️)

痛点 :手动写 list == null || list.isEmpty() 又繁琐又容易漏解决方案 :CollectionUtil.isEmpty() / CollectionUtil.isNotEmpty()

java 复制代码
import org.springframework.util.CollectionUtils;
import java.util.List;

// 模拟业务场景:查询用户订单列表
List<String> orderIds = userService.getOrderIds(1001);

// 判空:空集合/Null都返回true
if (CollectionUtils.isEmpty(orderIds)) {
    System.out.println("❌ 暂无订单数据");
    return;
}

// 非空才处理
if (CollectionUtils.isNotEmpty(orderIds)) {
    System.out.println("✅ 订单数:" + orderIds.size());
}

2. 数组转集合(快速转换💨)

痛点 :数组转 List 还要手动 new ArrayList + 遍历,太麻烦解决方案 :CollectionUtils.arrayToList()

java 复制代码
import org.springframework.util.CollectionUtils;

// 模拟:接口返回数组格式的商品ID
String[] goodsIds = {"1001", "1002", "1003"};

// 一行转成List
List<String> goodsList = CollectionUtils.arrayToList(goodsIds);
System.out.println("📦 转换后的集合:" + goodsList); // [1001, 1002, 1003]

3. 集合合并(拼接两个集合🧩)

痛点 :合并两个 List 要循环 addAll,代码冗余解决方案 :CollectionUtils.mergeArrayIntoCollection()

java 复制代码
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;

// 模拟:购物车合并(本地购物车 + 线上购物车)
List<String> localCart = new ArrayList<>();
localCart.add("商品A");
localCart.add("商品B");

String[] onlineCart = {"商品C", "商品D"};

// 把数组合并到集合中
CollectionUtils.mergeArrayIntoCollection(onlineCart, localCart);
System.out.println("🛒 合并后购物车:" + localCart); // [商品A, 商品B, 商品C, 商品D]

4. 判读集合是否包含指定元素(精准匹配🎯)

痛点 :手动遍历判断元素是否存在,代码不优雅解决方案 :CollectionUtils.contains()

java 复制代码
import org.springframework.util.CollectionUtils;
import java.util.List;

// 模拟:判断用户是否在白名单内
List<String> whiteList = List.of("admin", "test", "user1");
String currentUser = "admin";

if (CollectionUtils.contains(whiteList.iterator(), currentUser)) {
    System.out.println("✅ 用户在白名单,允许操作");
} else {
    System.out.println("❌ 无权限,请联系管理员");
}

5. 空集合兜底(避免返回 Null🚫)

痛点 :方法返回 Null 集合,调用方容易空指针解决方案 :CollectionUtils.emptyIfNull()

java 复制代码
import org.springframework.util.CollectionUtils;
import java.util.List;

// 模拟:查询用户收藏列表(可能返回Null)
List<String> collectList = collectService.getCollects(1001);

// 兜底:如果是Null,返回空集合(而非Null)
List<String> safeList = CollectionUtils.emptyIfNull(collectList);
// 放心遍历,不会空指针
safeList.forEach(collect -> System.out.println("⭐ 收藏内容:" + collect));
相关推荐
小蒜学长1 分钟前
基于Java的公司采购系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·公司采购系统
小坏讲微服务15 分钟前
Spring Boot 4 新特性全解析:从上手到生产实战
java·spring boot·后端·架构·springboot4
huaweichenai2 小时前
spring boot 实现file文件上传
java·spring boot·后端
VX_bysjlw9853 小时前
数码设备销售网站设计与实现39138-计算机毕设原创(免费领源码+带部署教程)
java·vue.js·spring boot·mysql·tomcat·mybatis·idea
code_slave(码畜)3 小时前
微服务架构落地:消息队列架构设计(下篇)——消息堆积、死信治理与集群监控告警实战
spring boot·spring cloud·微服务·云原生·中间件·架构
Patrick在香港5 小时前
同一份脚本,mac 正常 Windows 乱码:open() 默认编码实测(附 3.15 终局)
utf-8·windows·python·macos·跨平台·编码·标准库
霸道流氓气质5 小时前
OpenTelemetry 入门与实战:Java Agent、Spring Boot Starter与LLM调用追踪示例
java·开发语言·spring boot
m0_587383005 小时前
24 小时自助健身房系统软件开发实战指南与案例解析
java·spring boot·spring·系统架构·需求分析
爱编程的小白L5 小时前
基于SpringBoot+Vue的医院门诊排队叫号系统的设计与实现
spring boot
小黄人软件5 小时前
curl中途续传下载Codex离线安装包 Microsoft Store离线包下载。
microsoft