List集合为空或为null的区别

我们常说的“List集合为空或为null”,更具体的应该是如下说法:

  • List集合对象的内部元素为0个
  • List集合对象的引用为null
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class ListTest {
public static void main(String[] args) {
// 声明
ArrayList<String> list;
System.out.println("声明后、初始化前,该对象的引用为null");
// 初始化
list = new ArrayList<>();
if (null != list) {
System.out.println("初始化后,该对象的引用不为null");
}
if (list.isEmpty()) {
System.out.println("初始化后、添加元素前,该对象的内部元素为空");
}

// 较为常用的用法
if (null != list && !list.isEmpty()) {
// 进行取值、加工等操作
}
}
}

变量声明后、初始化前,是无法将变量与null进行比较的,IDEA直接报错,无法编译。

对于List的isEmpty()方法,其实就是判断当前List集合的size是否为0,也即与下面的代码一致:

1
2
3
public boolean isEmpty() {
return list.size == 0;
}