简介
在这个实验中,你将学习如何有效地检查 Java 中的列表是否为空。我们将探讨标准的 isEmpty()
方法,使用 size()
验证列表大小,并了解如何处理潜在的空列表场景,以编写健壮可靠的代码。
在这个实验中,你将学习如何有效地检查 Java 中的列表是否为空。我们将探讨标准的 isEmpty()
方法,使用 size()
验证列表大小,并了解如何处理潜在的空列表场景,以编写健壮可靠的代码。
isEmpty()
检查列表在这一步中,你将学习如何使用 isEmpty()
方法来检查 Java 中的列表是否为空。这是编程中的常见任务,而 isEmpty()
提供了一种清晰且高效的实现方式。
首先,在你的 ~/project
目录下创建一个名为 ListCheck.java
的新 Java 文件。你可以通过在左侧的文件资源管理器中右键单击,选择“新建文件”,然后输入 ListCheck.java
来完成此操作。
现在,在编辑器中打开 ListCheck.java
并添加以下代码:
import java.util.ArrayList;
import java.util.List;
public class ListCheck {
public static void main(String[] args) {
// Create an empty list
List<String> emptyList = new ArrayList<>();
// Create a list with elements
List<String> populatedList = new ArrayList<>();
populatedList.add("Apple");
populatedList.add("Banana");
// Check if the lists are empty using isEmpty()
System.out.println("Is emptyList empty? " + emptyList.isEmpty());
System.out.println("Is populatedList empty? " + populatedList.isEmpty());
}
}
让我们来详细分析这段代码:
import java.util.ArrayList;
和 import java.util.List;
:这两行代码导入了处理列表所需的类。List<String> emptyList = new ArrayList<>();
:这行代码创建了一个新的空列表,该列表可以存储 String
对象。List<String> populatedList = new ArrayList<>();
:这行代码创建了另一个新列表。populatedList.add("Apple");
和 populatedList.add("Banana");
:这两行代码向 populatedList
中添加元素。System.out.println("Is emptyList empty? " + emptyList.isEmpty());
:这行代码调用 emptyList
的 isEmpty()
方法。如果列表中没有元素,isEmpty()
方法将返回 true
,否则返回 false
。然后将结果打印到控制台。System.out.println("Is populatedList empty? " + populatedList.isEmpty());
:这行代码对 populatedList
执行相同的操作。保存 ListCheck.java
文件。
现在,打开 WebIDE 底部的终端,并确保你位于 ~/project
目录下。如果需要,你可以使用 cd ~/project
命令。
使用 javac
命令编译 Java 代码:
javac ListCheck.java
如果没有错误,~/project
目录下将创建一个 ListCheck.class
文件。
最后,使用 java
命令运行编译后的 Java 程序:
java ListCheck
你应该会看到类似以下的输出:
Is emptyList empty? true
Is populatedList empty? false
此输出证实了 isEmpty()
方法能够正确识别空列表和包含元素的列表。在 Java 中,使用 isEmpty()
是检查列表是否为空的首选方法,因为它比检查列表大小更具可读性,并且可能更高效。
size()
验证列表大小在上一步中,我们学习了如何使用 isEmpty()
方法检查列表是否为空。虽然 isEmpty()
非常适合检查列表中是否有元素,但有时你需要确切知道列表中元素的数量。为此,Java 提供了 size()
方法。
在这一步中,我们将修改 ListCheck.java
文件以使用 size()
方法,并了解它的工作原理。
如果 ListCheck.java
文件尚未在 WebIDE 编辑器中打开,请打开它。该文件应该位于你的 ~/project
目录下。
现在,让我们在 main
方法中添加一些代码行,以打印列表的大小。在使用 isEmpty()
的代码行之后添加以下代码行:
import java.util.ArrayList;
import java.util.List;
public class ListCheck {
public static void main(String[] args) {
// Create an empty list
List<String> emptyList = new ArrayList<>();
// Create a list with elements
List<String> populatedList = new ArrayList<>();
populatedList.add("Apple");
populatedList.add("Banana");
// Check if the lists are empty using isEmpty()
System.out.println("Is emptyList empty? " + emptyList.isEmpty());
System.out.println("Is populatedList empty? " + populatedList.isEmpty());
// Get and print the size of the lists using size()
System.out.println("Size of emptyList: " + emptyList.size());
System.out.println("Size of populatedList: " + populatedList.size());
}
}
我们添加了两行新代码:
System.out.println("Size of emptyList: " + emptyList.size());
:这行代码调用 emptyList
的 size()
方法。size()
方法以整数形式返回列表中元素的数量。System.out.println("Size of populatedList: " + populatedList.size());
:这行代码对 populatedList
执行相同的操作。保存 ListCheck.java
文件。
现在,回到 ~/project
目录下的终端。我们需要重新编译修改后的 Java 代码:
javac ListCheck.java
如果编译成功,再次运行程序:
java ListCheck
你现在应该会看到类似以下的输出:
Is emptyList empty? true
Is populatedList empty? false
Size of emptyList: 0
Size of populatedList: 2
如你所见,size()
方法正确报告了 emptyList
有 0 个元素,populatedList
有 2 个元素。
虽然你可以通过检查列表的大小是否为 0(list.size() == 0
)来判断列表是否为空,但为了代码的清晰性和可读性,通常更推荐使用 isEmpty()
方法。然而,当你需要知道列表中元素的确切数量时,例如在遍历列表或根据元素数量进行计算时,size()
方法就非常重要了。
null
列表)在前面的步骤中,我们处理的列表要么为空,要么包含元素。然而,在实际编程中,列表变量有可能为 null
。null
引用意味着该变量没有指向内存中的任何对象。尝试对 null
列表调用 isEmpty()
或 size()
等方法会导致 NullPointerException
,这是 Java 中常见的错误。
在这一步中,我们将学习如何在尝试检查列表是否为空或获取其大小时,安全地处理 null
列表。
在 WebIDE 编辑器中打开 ListCheck.java
文件。
让我们添加一个新的列表变量并将其设置为 null
。然后,我们将演示在不检查 null
的情况下尝试调用其方法会发生什么。修改 main
方法,使其包含以下代码:
import java.util.ArrayList;
import java.util.List;
public class ListCheck {
public static void main(String[] args) {
// Create an empty list
List<String> emptyList = new ArrayList<>();
// Create a list with elements
List<String> populatedList = new ArrayList<>();
populatedList.add("Apple");
populatedList.add("Banana");
// Create a null list
List<String> nullList = null;
// Check if the lists are empty using isEmpty()
System.out.println("Is emptyList empty? " + emptyList.isEmpty());
System.out.println("Is populatedList empty? " + populatedList.isEmpty());
// Get and print the size of the lists using size()
System.out.println("Size of emptyList: " + emptyList.size());
System.out.println("Size of populatedList: " + populatedList.size());
// --- This part will cause an error if uncommented ---
// System.out.println("Is nullList empty? " + nullList.isEmpty()); // This line will cause a NullPointerException
// System.out.println("Size of nullList: " + nullList.size()); // This line will also cause a NullPointerException
// ----------------------------------------------------
// Safely check for null before calling methods
System.out.println("\nSafely checking for null:");
if (nullList == null) {
System.out.println("nullList is null.");
} else {
System.out.println("Is nullList empty? " + nullList.isEmpty());
System.out.println("Size of nullList: " + nullList.size());
}
if (emptyList == null) {
System.out.println("emptyList is null.");
} else {
System.out.println("Is emptyList empty? " + emptyList.isEmpty());
System.out.println("Size of emptyList: " + emptyList.size());
}
}
}
我们添加了:
List<String> nullList = null;
:这行代码声明了一个列表变量,但将其值设置为 null
。NullPointerException
的代码行。if
语句:if (nullList == null)
。这是处理 null
的关键部分。我们在尝试调用 nullList
的任何方法之前,先检查该变量是否为 null
。如果是 null
,我们打印一条消息。如果不是 null
,我们可以安全地调用 isEmpty()
和 size()
方法。emptyList
进行了类似的检查,以表明 if
条件对于非 null
列表也能正常工作。保存 ListCheck.java
文件。
在终端中编译修改后的代码:
javac ListCheck.java
运行程序:
java ListCheck
输出应该如下所示:
Is emptyList empty? true
Is populatedList empty? false
Size of emptyList: 0
Size of populatedList: 2
Safely checking for null:
nullList is null.
Is emptyList empty? true
Size of emptyList: 0
注意,我们成功检查了 nullList
是否为 null
,并避免了 NullPointerException
。我们还确认了该检查对于 emptyList
也能正常工作。
始终要记住,在调用列表(或任何对象引用)的方法之前,先检查其是否可能为 null
。这是 Java 中防止 NullPointerException
错误的基本做法。一个常见的模式是 if (myList != null && !myList.isEmpty())
,用于在一个条件中检查列表是否不为 null
且不为空。
在本次实验中,我们学习了如何检查 Java 中的列表是否为空。我们首先探索了 isEmpty()
方法,它提供了一种直接且高效的方式来判断列表中是否包含任何元素。我们创建了空列表和包含元素的示例列表,并使用 isEmpty()
方法验证它们的状态,观察布尔类型的输出结果。
我们还研究了如何使用 size()
方法,通过将列表的大小与零进行比较来检查列表是否为空。该方法返回列表中元素的数量,大小为 0 则表示列表为空。最后,我们探讨了在尝试检查列表是否为空之前处理空列表(null
列表)的关键要点,展示了如何通过添加空值检查来避免 NullPointerException
。