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为空,会抛出异常吗?
答案 0 :(得分:1)
我想提供代码的现代版本:
List<LocalDate> lst = null;
LocalDate today = LocalDate.now(ZoneId.of("Asia/Ashkhabad"));
if (lst == null) {
lst = new ArrayList<>();
}
System.out.println("Contains today? " + lst.contains(today));
System.out.println("Empty? " + lst.isEmpty());
请输入您放置亚洲/阿什哈巴德所需的时区。刚打印的代码:
Contains today? false
Empty? true
所以不,没有抛出异常。列表 为空。
另一种找出方法是阅读文档。对于List.contains
,它说:
如果此列表包含指定的元素,则返回
true
。更多 正式地,当且仅当此列表至少包含时,才返回true
一个元素e
,使Objects.equals(o, e)
。
空列表不包含这样的元素,因此我们应该期望返回false
。当然,请继续阅读:
<强>抛出:强>
ClassCastException
- 如果指定元素的类型是 与此列表不兼容(可选)
NullPointerException
- 如果指定的元素为null且为此 list不允许null元素(可选)
如果列表是空的,则抛出任何异常,如果没有其他地方,这里就会提到它。事实并非如此。因此,当列表为空并且您测试contains
时,列表不得抛出任何异常。
我说我给了你现代版的代码。您使用的课程Calendar
,Date
和SimpleDateFormat
已经过时且设计不佳。相反,我使用了来自LocalDate
的{{1}},即现代Java日期和时间API。虽然在列表中保留java.time
个对象会有问题,因为相等的标准既严格又复杂,拥有Calendar
个对象列表是有利的。 LocalDate
是一个没有时间的日期,所以相等很简单:如果它们表示同一天,则两个这样的对象是相等的。我是否记得曾说过LocalDate
与旧班相比,工作得更好?
List.contains
java.time
。答案 1 :(得分:0)
如果在空列表上调用contains,则代码不会抛出异常。只有在未初始化列表的情况下才会收到异常(NullPointerException)。
无论如何,如果没有“List”,代码段中的代码将无法编译 - 由于第一行,列表实例可用于其余代码。
答案 2 :(得分:0)
List<String> myList = new ArrayList<>();
DateFormat df = new SimpleDateFormat("DD/MM/Y");
if(myList.isEmpty()){
System.out.println("List Empty");
}
myList.add(0,"08/04/2018");
System.out.println("Date Format ::" + myList.get(0));