判断list集合不为空if(list!=null&&!list.size() > 0)

在java开发中新手容易将判断一个list集合是否为空,只以If(list!=null)去判断,且容易和isEmpty()混淆,但是,list集合为空还是为null,是有区别的。

先看一下下面的例子:

看一下控制台输出结果:

造成这种结果其实是null判断是判断有没有对list集合分配内存空间,而不是list里面内容是否为空。new ArrayList<>()就已经对list分配了内存空间

看一下isEmpty()

isEmpty() 和(list.size() == 0)都是判断List内容是否为空

new一个user对象,判断user的list内容是否为空,出现异常,这是因为, 使用isEmpty()和size()的前提是,list是一个空集合,而不是null,否则会抛异常。


所有我们在判断集合不为空的时候常采用:if(list!=null&&!list.isEmpty())的方法去取list里面的值,或 if(list!=null&&!list.size() > 0)。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在您提供的代码中,可以进行一些优化来提高性能和简化代码: 1. 使用`List`的`stream()`方法和`filter()`方法:可以使用流操作来简化循环和条件判断的过程。 2. 使用`LocalDate`代替`Date`:`java.util.Date`类是线程安全的,但在新的日期和时间API中,推荐使用`java.time.LocalDate`类。它提供了更好的API和更简洁的代码。 3. 根据条件判断的重复性,合并相同的条件:在您的代码中有一些条件判断是相同的,可以将它们合并在一起,减少重复代码。 下面是优化后的代码示例: ```java import java.time.LocalDate; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { // 示例调用 List<AuthorityListVo> search = new ArrayList<>(); LocalDate parameterBeginTime = LocalDate.of(2021, 1, 1); LocalDate parameterEndTime = LocalDate.of(2021, 12, 31); List<AuthorityListVo> authorityListVoList = authorityList(search, parameterEndTime, parameterBeginTime); System.out.println(authorityListVoList); } public static List<AuthorityListVo> authorityList(List<AuthorityListVo> search, LocalDate parameterEndTime, LocalDate parameterBeginTime) { return search.stream() .filter(authorityListVo -> { LocalDate beginTime = authorityListVo.getBeginTime().toLocalDate(); LocalDate endTime = authorityListVo.getEndTime().toLocalDate(); if (parameterEndTime == null && (beginTime.compareTo(parameterBeginTime) >= 0 || endTime.compareTo(parameterBeginTime) >= 0)) { return true; } else if (parameterBeginTime == null && (beginTime.compareTo(parameterEndTime) <= 0 || endTime.compareTo(parameterEndTime) <= 0)) { return true; } else if (parameterEndTime != null && parameterBeginTime != null && beginTime.compareTo(parameterBeginTime) >= 0 && beginTime.compareTo(parameterEndTime) <= 0) { return true; } else if (parameterEndTime != null && parameterBeginTime != null && endTime.compareTo(parameterBeginTime) >= 0 && endTime.compareTo(parameterEndTime) <= 0) { return true; } return false; }) .toList(); } static class AuthorityListVo { private Date beginTime; private Date endTime; public AuthorityListVo(Date beginTime, Date endTime) { this.beginTime = beginTime; this.endTime = endTime; } public Date getBeginTime() { return beginTime; } public Date getEndTime() { return endTime; } } } ``` 在优化后的代码中,我们使用`LocalDate`类来替代`Date`类,通过调用`toLocalDate()`方法将`Date`对象转换为`LocalDate`对象。然后使用流操作中的`filter()`方法来筛选满足条件的元素。为了避免重复判断条件,我们使用了合并条件的方式。 请注意,这只是一种可能的优化方法,具体优化策略可能需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值