如何检查 Java 列表中是否包含 null 元素

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何检查 Java List 中是否包含 null 元素。我们将探索不同的方法来实现这一目标,首先从简单直接的 contains() 方法开始。你将学习如何使用 contains(null) 快速判断列表中是否存在 null 值。

在完成初步检查后,本实验将引导你遍历列表,手动检查每个元素是否为 null。这种方法能让你拥有更多控制权,并且可以处理包含多个 null 元素的情况,这部分内容也会涉及。在本实验结束时,你将对识别 Java 列表中 null 元素的各种技术有扎实的理解。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/StringManipulationGroup -.-> java/strings("Strings") java/DataStructuresGroup -.-> java/arrays("Arrays") java/DataStructuresGroup -.-> java/arrays_methods("Arrays Methods") java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/arraylist("ArrayList") subgraph Lab Skills java/for_loop -.-> lab-559947{{"如何检查 Java 列表中是否包含 null 元素"}} java/strings -.-> lab-559947{{"如何检查 Java 列表中是否包含 null 元素"}} java/arrays -.-> lab-559947{{"如何检查 Java 列表中是否包含 null 元素"}} java/arrays_methods -.-> lab-559947{{"如何检查 Java 列表中是否包含 null 元素"}} java/collections_methods -.-> lab-559947{{"如何检查 Java 列表中是否包含 null 元素"}} java/arraylist -.-> lab-559947{{"如何检查 Java 列表中是否包含 null 元素"}} end

使用 contains() 方法检查 null

在这一步中,我们将探讨如何使用 contains() 方法检查 Java List 中是否存在 null 元素。虽然 contains() 通常用于检查特定元素,但它也可以用于判断一个 List 是否包含 null

首先,让我们创建一个新的 Java 文件。在左侧的文件资源管理器中,右键点击 ~/project 目录,选择“新建文件”,并将其命名为 NullCheckList.java

现在,在编辑器中打开 NullCheckList.java 并添加以下代码:

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");

        // Check if the list contains null using contains()
        boolean containsNull = names.contains(null);

        // Print the result
        System.out.println("Does the list contain null? " + containsNull);
    }
}

让我们来详细分析这段代码的新部分:

  • import java.util.List;import java.util.ArrayList;:这两行代码导入了使用 ListArrayList 所需的类。
  • List<String> names = new ArrayList<>();:这行代码创建了一个新的 ArrayList,它可以存储 String 对象。我们将其声明为 List 类型,因为 ListArrayList 实现的接口。
  • names.add(null);:这行代码明确地向列表中添加了一个 null 值。
  • boolean containsNull = names.contains(null);:这是本步骤的核心。我们在 names 列表上调用 contains() 方法,并将 null 作为参数传递。如果列表包含 null,该方法返回 true,否则返回 false。结果存储在布尔变量 containsNull 中。
  • System.out.println("Does the list contain null? " + containsNull);:这行代码将检查结果打印到控制台。

保存文件(Ctrl + S 或 Cmd + S)。

现在,让我们编译并运行这个程序。打开 WebIDE 底部的终端。确保你位于 ~/project 目录下。

使用 javac 编译代码:

javac NullCheckList.java

如果编译成功(没有输出表示成功),使用 java 运行编译后的代码:

java NullCheckList

你应该会看到输出结果,表明列表是否包含 null

遍历列表检查 null 元素

在上一步中,我们使用 contains() 方法来检查列表中是否包含 null。虽然这种方法简单,但它只能告诉我们列表中是否存在 null,而不能告知 null 元素的位置或出现的次数。在列表中处理 null 元素更常用且灵活的方法是使用循环遍历列表,并逐个检查每个元素。

在这一步中,我们将修改 NullCheckList.java 程序,使其遍历列表并找出所有 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

        System.out.println("Checking list for null elements:");

        // Loop through the list using a for loop
        for (int i = 0; i < names.size(); i++) {
            // Get the element at the current index
            String name = names.get(i);

            // Check if the element is null
            if (name == null) {
                System.out.println("Null found at index: " + i);
            }
        }
    }
}

让我们看看代码的改动之处:

  • 我们在列表中又添加了一个 null 元素,以演示如何找出多个 null 元素。
  • for (int i = 0; i < names.size(); i++):这是一个标准的 for 循环,从索引 0 开始,一直迭代到(但不包括)names 列表的大小。变量 i 表示当前的索引。
  • String name = names.get(i);:在循环内部,names.get(i) 会获取当前索引 i 处的元素,并将其存储在 name 变量中。
  • if (name == null):这是关键的检查步骤。我们使用相等运算符 == 来比较 name 变量和 null。如果它们相等,就意味着当前索引处的元素是 null
  • System.out.println("Null found at index: " + i);:如果找到 null 元素,这行代码会打印一条消息,指出该 null 元素所在的索引。

保存文件(Ctrl + S 或 Cmd + S)。

现在,在 ~/project 目录下的终端中编译并运行修改后的程序:

javac NullCheckList.java
java NullCheckList

你应该会看到输出结果,显示列表中 null 元素所在的索引。

Checking list for null elements:
Null found at index: 1
Null found at index: 4

这种方法能为我们提供列表中 null 元素的详细信息,这在程序中恰当地处理这些元素时通常是必要的。

处理多个 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

总结

在本次实验中,我们学习了如何检查 Java List 中是否包含 null 元素。我们探讨了将 null 作为参数使用 contains() 方法,这为判断列表中是否存在单个 null 元素提供了一种直接的方式。

我们创建了一个示例 ArrayList,添加了有效元素和一个 null 值,然后使用 names.contains(null) 进行检查。结果会打印到控制台,展示了该方法在列表中进行基本 null 检查的有效性。