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

Java 检查列表是否为空的两种方法-差异?,java,list,Java,List,我有一个简短的问题 假设我们有一个名为List的ArrayList。我们要检查列表是否为空 以下各项之间有什么区别(如果有): 及 我正在编写一个古老的代码(2007年左右由其他人编写),它使用list==null结构。但是,当我们有list.isEmpty()method…时,为什么要使用这个结构呢?第一个结构告诉您list变量是否被分配了一个列表实例 第二个命令告诉您List变量引用的列表是否为空。 如果list为空,第二行将抛出NullPointerException 如果您只想在列表为空

我有一个简短的问题

假设我们有一个名为
List
ArrayList
。我们要检查列表是否为空

以下各项之间有什么区别(如果有):


我正在编写一个古老的代码(2007年左右由其他人编写),它使用
list==null
结构。但是,当我们有
list.isEmpty()
method…

时,为什么要使用这个结构呢?第一个结构告诉您
list
变量是否被分配了一个列表实例

第二个命令告诉您
List
变量引用的列表是否为空。 如果
list
为空,第二行将抛出
NullPointerException

如果您只想在列表为空时执行某些操作,则更安全的做法是:

if (list != null && list.isEmpty()) { do something }
如果要在列表为null或空时执行某些操作,可以编写:

if (list == null || list.isEmpty()) { do something }
if (list != null && !list.isEmpty()) { do something }
如果要在列表不为空的情况下执行某些操作,可以编写:

if (list == null || list.isEmpty()) { do something }
if (list != null && !list.isEmpty()) { do something }
if(list==null)
检查列表是否为
null

如果(list.isEmpty())
检查列表是否为空,如果列表为
null
并且您调用
isEmpty()
它将为您提供
NullPointerException

最好先检查列表是否为空,然后检查是否为空

if(list !=null && ! list.isEmpty()){
  // do your code here
}

另一种方法是使用


看看这个方法。它更简洁。

如果/当您更改此项时,请小心-列表可以初始化并为空-但是如果您在空列表上尝试list.isEmpty(),您将得到一个NullPointerException。“但是当我们有
list.isEmpty()
方法时,为什么要使用此构造…”,因为如果您使用
list.isEmpty()
对于
list
变量,如果
list==null
为true,它将抛出
NullPointerException
。这两种检查从根本上完全不同。您可以添加第三种方法;-)@劳恩:当然,为什么不呢?:)