You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中空List调用contains方法(传入格式化日期)是否会抛出异常?

问题解答

先把你提供的Java代码整理成可阅读的格式:

List<String> Lst = List; 
Calendar today = Calendar.getInstance(); 
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yy"); 
if(null == Lst){ 
    Lst = new ArrayList<String>(); 
} 
if(!Lst.contains(df.format(today.getTime()))) { 
    System.out.println("..."); 
}

直接给出结论:当Lst是空集合(即已初始化但不含任何元素的ArrayList)时,执行这段代码不会抛出任何异常。

具体分析

我们一步步拆解执行逻辑:

  1. 先提个小问题:原代码第一行List<String> Lst = List;存在编译错误——List是Java的接口类型,不能直接赋值给变量,这应该是笔误(比如想写List<String> Lst = null;或者List<String> Lst = new ArrayList<>();),不过我们聚焦在Lst为空集合的场景;
  2. 第一个if(null == Lst)判断:因为Lst是空集合(不是null),所以这个分支不会执行,Lst保持为空集合状态;
  3. 第二个if(!Lst.contains(df.format(today.getTime())))判断:
    • Java集合框架中,空集合调用contains()方法是完全安全的,ArrayList的contains()方法遇到空集合时会直接返回false;
    • 取反后!false结果为true,因此会执行System.out.println("...");语句,整个流程没有触发异常的操作。

补充说明

哪怕是Lst初始为null的情况,这段代码也做了null安全处理——第一个if分支会把Lst初始化为空的ArrayList,后续逻辑同样不会抛出异常,唯一需要修正的是第一行的编译错误。

内容的提问来源于stack exchange,提问作者Jaishree Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:32:59