java中判断list是否为空的用法

本文详细解析了在Java中如何判断List是否为空的几种方法,包括使用if语句结合size()方法和isEmpty()方法,以及它们之间的区别和适用场景。通过类比商店购物的例子,深入浅出地解释了list!=null与!list.isEmpty()的区别,帮助读者更好地理解和掌握集合判空的正确姿势。

1、如果想判断list是否为空,可以这么判断:

if(null == list || list.size() ==0 ){

  //为空的情况

}else{

  //不为空的情况

}

2、list.isEmpty() 和 list.size()==0 有啥区别呢

    答案:没有区别 。isEmpty()判断有没有元素,而size()返回有几个元素, 如果判断一个集合有无元素 建议用isEmpty()方法.比较符合逻辑用法。

3、list!=null 跟 ! list.isEmpty()有什么区别?
这就相当与,你要要到商店买东西
list!=null 首先判断是否有商店
!list.isEmpty() 没有判断商店是否存在,而是判断商店是否有东西
总结用法:如果连商店都没有,何来的的东西可卖
所以一般的判断是
if(list!=null && !list.isEmpty()){
   //不为空的情况
}else{
   //为空的情况
}

转自:[https://www.cnblogs.com/yuanchaoyong/p/6247896.html]

Java 8 中判断 `List` 是否,虽然核心方法仍然是基于传统的 `isEmpty()` 和 `null` 检查,但我们可以结合 Java 8 的新特性(如 `Optional` 和 Stream)来更安全、更函数式地处理可能为 `null` 的 `List`。 --- ### ✅ 方法一:基础判方式(推荐) ```java List<String> list = getList(); // 可能为 null 或 empty if (list == null || list.isEmpty()) { System.out.println("List的或为 null"); } else { System.out.println("List 不为,大小为: " + list.size()); } ``` - `list == null`:防止指针异常。 - `list.isEmpty()`:判断是否没有元素(等价于 `size() == 0`,但比 `size()` 更高效)。 > ⚠️ 注意:不能直接调用 `list.isEmpty()` 如果 `list` 可能为 `null`,否则会抛出 `NullPointerException`。 --- ### ✅ 方法二:使用 Java 8 `Optional` 安全操作 当你希望以函数式风格处理 `List`,可以使用 `Optional.ofNullable()` 避免显式判: ```java import java.util.*; Optional.ofNullable(list) .filter(l -> !l.isEmpty()) // 排除 null 或 empty 的情况 .ifPresent(l -> l.forEach(System.out::println)); // 安全遍历 ``` > 🔍 解释: > - `Optional.ofNullable(list)`:包装可能为 `null` 的 list。 > - `.filter(l -> !l.isEmpty())`:只有非 null 且非list 才通过。 > - `.ifPresent(...)`:确保不会对 null 调用方法。 --- ### ✅ 方法三:封装工具方法(推荐复用) ```java public static <T> boolean isEmpty(List<T> list) { return list == null || list.isEmpty(); } public static <T> boolean isNotEmpty(List<T> list) { return list != null && !list.isEmpty(); } ``` 使用示例: ```java if (isNotEmpty(list)) { list.forEach(System.out::println); } ``` --- ### ✅ 方法四:结合 Stream 处理非 List ```java Optional.ofNullable(list) .stream() .flatMap(java.util.stream.Stream::of) .filter(Objects::nonNull) .forEach(System.out::println); ``` 或者更简洁的方式(适用于过滤并处理): ```java Optional.ofNullable(list) .orElse(Collections.emptyList()) .stream() .forEach(System.out::println); // 安全遍历,即使原 list 为 null ``` > 这里使用 `orElse(Collections.emptyList())` 将 `null` 替换为列表,避免后续操作出错。 --- ### ❌ 错误写法示例 ```java // ❌ 危险!如果 list 为 null,会抛出 NullPointerException if (!list.isEmpty()) { ... } ``` 必须先判 `null`! --- ### 总结对比 | 方法 | 是否推荐 | 说明 | |------|----------|------| | `list == null || list.isEmpty()` | ✅ 强烈推荐 | 简单高效,最常用 | | `Optional.ofNullable(...)` + `filter/isPresent` | ✅ 推荐 | 函数式风格,适合链式调用 | | `Optional.ofNullable(...).orElse(emptyList)` | ✅ 推荐 | 转换为默认列表,便于 Stream 操作 | | 封装 `isEmpty()` 工具方法 | ✅ 推荐 | 提高代码可读性和复用性 | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值