检查列表是否为空的两种方法 - 差异?

2022-09-01 21:33:37

我有一个简短的问题。

让我们假设我们有一个叫做.我们要检查列表是否为空。ListArrayListlist

以下两者之间有什么区别(如果有的话):

if (list == null) { do something }

if (list.isEmpty()) { do something }

我正在研究一个古老的代码(由其他人在2007年左右编写),它正在使用结构。但是,当我们有方法时,为什么要使用这种结构...list == nulllist.isEmpty()


答案 1

第一个告诉您是否已为变量分配了 List 实例。list

第二个告诉您变量引用的 List 是否为空。如果 为 null,则第二行将抛出 .listlistNullPointerException

如果你想只在列表为空时才这样做,那么写更安全:

if (list != null && list.isEmpty()) { do something }

如果要在列表为空或空时执行某些操作,可以编写:

if (list == null || list.isEmpty()) { do something }

如果要在列表不为空的情况下执行某些操作,可以编写:

if (list != null && !list.isEmpty()) { do something }

答案 2

另一种方法是使用Apache Commons Collections

看看方法CollectionUtils.isEmpty()。它更简洁。