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

时间:2015-01-22 12:48:54

标签: java list

我有一个简短的问题。

假设我们有一个名为List的{​​{1}} ArrayList。我们想检查列表是否为空。

之间有什么区别(如果有的话)
list

if (list == null) { do something }

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

3 个答案:

答案 0 :(得分:29)

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

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

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

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

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

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

如果你想在列表不为空的情况下做某事,你可以写:

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

答案 1 :(得分:8)

另一种方法是使用Apache Commons Collections

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

答案 2 :(得分:2)

if (list == null)检查列表是否为null

if (list.isEmpty())检查列表是否为空,如果列表为null而您致电isEmpty(),则会显示NullPointerException

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

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