处理多个 null 元素
在上一步中,我们成功地遍历了一个列表并找出了 null 元素的索引。现在,让我们在此基础上进一步演示如何处理这些 null 元素。“处理”的具体含义取决于你程序的逻辑,比如跳过 null 元素、用默认值替换它,或者执行特定的操作。
在这一步中,我们将再次修改 NullCheckList.java 程序。这次,我们会遍历列表,并针对非 null 元素和 null 元素打印不同的消息。
在 WebIDE 编辑器中打开 NullCheckList.java 文件。将现有的 main 方法替换为以下代码:
import java.util.List;
import java.util.ArrayList;
public class NullCheckList {
public static void main(String[] args) {
// Create a List and add some elements, including null
List<String> names = new ArrayList<>();
names.add("Alice");
names.add(null); // Adding a null element
names.add("Bob");
names.add("Charlie");
names.add(null); // Adding another null element
names.add("David");
System.out.println("Processing list elements:");
// Loop through the list using a for-each loop
for (String name : names) {
// Check if the element is null
if (name == null) {
System.out.println("Found a null element, skipping.");
} else {
// If the element is not null, process it
System.out.println("Processing name: " + name);
}
}
}
}
让我们看看这个版本的改动之处:
- 我们在列表中又添加了一个非
null 元素("David")。
for (String name : names):这是一个增强型 for 循环(也称为 for-each 循环)。它是一种无需使用索引就能方便地遍历集合中元素的方法。在每次迭代中,变量 name 会保存 names 列表中的当前元素。
if (name == null):我们仍然使用 == 运算符来检查当前元素(name)是否为 null。
System.out.println("Found a null element, skipping.");:如果元素是 null,我们会打印一条消息,表示要跳过它。在实际应用中,你可能会在这里执行不同的操作,比如记录 null 信息或赋予默认值。
else { System.out.println("Processing name: " + name); }:如果元素不是 null,我们会进入 else 代码块,并打印一条消息,表示正在处理这个非 null 的名称。
保存文件(Ctrl + S 或 Cmd + S)。
现在,在 ~/project 目录下的终端中编译并运行修改后的程序:
javac NullCheckList.java
java NullCheckList
你应该会看到输出结果,它会处理非 null 的名称,并在遇到 null 元素时给出提示。
Processing list elements:
Processing name: Alice
Found a null element, skipping.
Processing name: Bob
Processing name: Charlie
Found a null element, skipping.
Processing name: David
这个示例展示了在迭代过程中处理 null 元素的基本方法。根据你的具体需求,你可以用默认字符串替换 null、从列表中移除 null 元素,或者执行其他操作。关键在于,在尝试使用元素之前要先检查是否为 null,因为尝试对 null 对象调用方法会导致 NullPointerException。