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

JavaJavaBeginner
立即练习

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

简介

在这个实验中,你将学习如何检查 Java List 中是否存在特定元素。我们将探讨在处理数据集合时执行此常见任务的不同方法。

你将首先学习使用 List 接口提供的便捷 contains() 方法。之后,你将了解如何手动遍历列表以检查元素,这在某些场景中很有用。最后,我们将介绍在执行这些检查时如何处理列表中存在的 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/if_else("If...Else") java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/StringManipulationGroup -.-> java/strings("Strings") java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/arraylist("ArrayList") subgraph Lab Skills java/if_else -.-> lab-559945{{"如何检查 Java 列表中是否包含特定元素"}} java/for_loop -.-> lab-559945{{"如何检查 Java 列表中是否包含特定元素"}} java/strings -.-> lab-559945{{"如何检查 Java 列表中是否包含特定元素"}} java/collections_methods -.-> lab-559945{{"如何检查 Java 列表中是否包含特定元素"}} java/arraylist -.-> lab-559945{{"如何检查 Java 列表中是否包含特定元素"}} end

使用 contains() 方法检查元素

在这一步中,你将学习如何使用 contains() 方法检查 Java List 中是否存在特定元素。这是处理数据集合时的常见任务。

首先,在你的 ~/project 目录下创建一个名为 ListContains.java 的新 Java 文件。你可以通过在左侧的文件资源管理器中右键单击,选择“新建文件”,然后输入 ListContains.java 来完成此操作。

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

import java.util.ArrayList;
import java.util.List;

public class ListContains {

    public static void main(String[] args) {
        // Create a List of strings
        List<String> fruits = new ArrayList<>();

        // Add some fruits to the list
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");
        fruits.add("Mango");

        // Check if the list contains "Banana"
        boolean hasBanana = fruits.contains("Banana");
        System.out.println("Does the list contain Banana? " + hasBanana);

        // Check if the list contains "Grape"
        boolean hasGrape = fruits.contains("Grape");
        System.out.println("Does the list contain Grape? " + hasGrape);
    }
}

下面来详细分析这段代码:

  • import java.util.ArrayList;import java.util.List;:这两行代码导入了处理列表所需的类。
  • List<String> fruits = new ArrayList<>();:这行代码创建了一个新的 ArrayList,它是一种可以存储 String 对象的 List
  • fruits.add("...");:这些代码行向列表中添加元素(水果名称)。
  • fruits.contains("Banana");:这是本步骤的核心。contains() 方法在 fruits 列表上调用,它接受一个参数,即我们要检查的元素。如果在列表中找到该元素,则返回 true,否则返回 false
  • boolean hasBanana = ...;contains() 方法的结果存储在一个布尔变量(hasBananahasGrape)中。
  • System.out.println("...");:这些代码行将结果打印到控制台。

保存 ListContains.java 文件(使用 Ctrl+S 或 Cmd+S)。

现在,打开 WebIDE 底部的终端。确保你位于 ~/project 目录下。如果不是,请输入 cd ~/project 并按回车键。

使用 javac 命令编译 Java 代码:

javac ListContains.java

如果没有错误,~/project 目录下将创建一个 ListContains.class 文件。

最后,使用 java 命令运行编译后的 Java 程序:

java ListContains

你应该会看到类似以下的输出:

Does the list contain Banana? true
Does the list contain Grape? false

此输出证实了 contains() 方法正确识别了 "Banana" 和 "Grape" 是否存在于我们的列表中。

手动遍历列表

在上一步中,我们使用 contains() 方法来检查元素。虽然 contains() 方法很方便,但有时你需要逐个检查列表中的每个元素。这被称为迭代或遍历列表。在这一步中,我们将学习如何使用 for 循环来实现这一点。

在 WebIDE 编辑器中打开 ~/project 目录下的 ListContains.java 文件。

我们将修改现有代码,以遍历 fruits 列表并打印每个元素。将现有的 main 方法替换为以下代码:

import java.util.ArrayList;
import java.util.List;

public class ListContains {

    public static void main(String[] args) {
        // Create a List of strings
        List<String> fruits = new ArrayList<>();

        // Add some fruits to the list
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");
        fruits.add("Mango");

        // Loop through the list using a for loop
        System.out.println("Printing fruits in the list:");
        for (int i = 0; i < fruits.size(); i++) {
            String fruit = fruits.get(i);
            System.out.println(fruit);
        }
    }
}

让我们来看看新增的部分:

  • System.out.println("Printing fruits in the list:");:这行代码只是在开始列出水果之前打印一个标题。
  • for (int i = 0; i < fruits.size(); i++):这是一个标准的 for 循环。
    • int i = 0:我们将计数器变量 i 初始化为 0。在编程中,我们通常从 0 开始计数。
    • i < fruits.size():只要 i 小于 fruits 列表中的元素总数,循环就会继续。fruits.size() 会返回元素的数量。
    • i++:每次循环执行后,我们将 i 的值增加 1。
  • String fruit = fruits.get(i);:在循环内部,fruits.get(i) 从列表中获取当前位置 i 的元素。我们将这个元素存储在一个名为 fruitString 变量中。
  • System.out.println(fruit);:这行代码将当前的 fruit 打印到控制台。

保存 ListContains.java 文件。

现在,在终端中编译修改后的代码:

javac ListContains.java

如果编译成功,运行程序:

java ListContains

你应该会看到以下输出:

Printing fruits in the list:
Apple
Banana
Orange
Mango

这表明我们的 for 循环成功地遍历了列表,并将每个水果打印在新的一行上。像这样手动遍历列表可以让你更灵活地处理每个元素,这对于比简单检查元素是否存在更复杂的任务非常有用。

处理列表中的空元素

在现实世界中,列表有时可能包含“null”值,它表示没有值。如果你在不检查的情况下对空值执行操作,程序可能会因 NullPointerException 而崩溃。在这一步中,你将学习在遍历列表时如何处理空元素。

在 WebIDE 编辑器中打开 ~/project 目录下的 ListContains.java 文件。

你将修改代码,向列表中添加一个 null 元素,然后在循环中检查是否为空。将现有的 main 方法替换为以下代码:

import java.util.ArrayList;
import java.util.List;

public class ListContains {

    public static void main(String[] args) {
        // Create a List of strings
        List<String> fruits = new ArrayList<>();

        // Add some fruits to the list, including a null
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add(null); // Adding a null element
        fruits.add("Orange");
        fruits.add("Mango");

        // Loop through the list and handle null elements
        System.out.println("Printing fruits in the list (handling nulls):");
        for (int i = 0; i < fruits.size(); i++) {
            String fruit = fruits.get(i);

            // Check if the element is null before processing
            if (fruit != null) {
                System.out.println(fruit);
            } else {
                System.out.println("Found a null element");
            }
        }
    }
}

以下是修改的部分:

  • fruits.add(null);:向列表中添加了一个 null 值。
  • if (fruit != null):在循环内部,在尝试打印 fruit 之前,添加了一个 if 语句来检查 fruit 变量是否 不为 空。
  • System.out.println(fruit);:这行代码在 if 块内,因此只有当 fruit 不为空时才会执行。
  • else { System.out.println("Found a null element"); }:如果 fruit 为空,则执行这个 else 块,打印一条消息,而不是尝试打印空值本身。

保存 ListContains.java 文件。

在终端中编译修改后的代码:

javac ListContains.java

如果编译成功,运行程序:

java ListContains

你应该会看到以下输出:

Printing fruits in the list (handling nulls):
Apple
Banana
Found a null element
Orange
Mango

如你所见,程序现在可以正确识别并处理空元素,而不会崩溃。在 Java 编程中,检查空值是一项至关重要的操作,它可以防止错误,让你的程序更加健壮。

总结

在本次实验中,你学习了如何检查 Java List 是否包含特定元素。首先,你了解了最直接的方法,即使用内置的 contains() 方法,它能高效地判断元素是否存在,并返回一个布尔值结果。

接着,你深入研究了手动遍历列表进行检查的方法,这让你更深入地理解了 contains() 方法的内部工作原理。最后,你还考虑了在执行这些检查时处理列表中空元素的重要性,从而确保代码的健壮性和无错性。