简介
在本次实验中,你将学习如何在 Java 中检查集合内是否存在特定元素。我们将重点介绍所有集合类型都可用的 contains()
方法。你将练习对不同类型的元素使用 contains()
方法,并学习如何处理空元素。完成本次实验后,你将能够熟练判断 Java 集合中是否存在元素。
在本次实验中,你将学习如何在 Java 中检查集合内是否存在特定元素。我们将重点介绍所有集合类型都可用的 contains()
方法。你将练习对不同类型的元素使用 contains()
方法,并学习如何处理空元素。完成本次实验后,你将能够熟练判断 Java 集合中是否存在元素。
contains()
方法检查元素在这一步中,我们将探讨如何在 Java 中检查集合内是否存在特定元素。集合是一种基本的数据结构,用于将多个元素组合成一个单元。Java 提供了各种类型的集合,如列表(List)、集合(Set)和映射(Map)。
在处理集合时,一个常见的任务是判断某个特定元素是否存在。Java 的 Collection
接口是所有集合类型的根接口,它为此提供了一个便捷的方法:contains()
。
contains()
方法接受一个参数,即你要检查的元素,并返回一个布尔值:如果在集合中找到该元素,则返回 true
;否则返回 false
。
让我们创建一个简单的 Java 程序,演示如何对 ArrayList
(一种常见的列表类型)使用 contains()
方法。
如果 HelloJava.java
文件尚未在 WebIDE 编辑器中打开,请打开它。
将文件的全部内容替换为以下代码:
import java.util.ArrayList;
import java.util.List;
public class HelloJava {
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)和 ArrayList
所需的类。List<String> fruits = new ArrayList<>();
:这行代码创建了一个新的 ArrayList
,它可以存储 String
对象,并将其赋值给名为 fruits
的变量。fruits.add("Apple");
及类似的行:这些行将元素(表示水果名称的字符串)添加到我们的 fruits
列表中。boolean hasBanana = fruits.contains("Banana");
:这行代码调用 fruits
列表的 contains()
方法,检查字符串 "Banana" 是否存在。结果(true
或 false
)存储在布尔变量 hasBanana
中。System.out.println("Does the list contain Banana? " + hasBanana);
:这行代码打印出对 "Banana" 的检查结果。boolean hasGrape = fruits.contains("Grape");
及后续的 println
语句:这些行对 "Grape" 进行同样的检查,而 "Grape" 不在我们的列表中。保存文件(Ctrl+S 或 Cmd+S)。
在终端中编译修改后的程序:
javac HelloJava.java
运行编译后的程序:
java HelloJava
你应该会看到类似以下的输出:
Does the list contain Banana? true
Does the list contain Grape? false
这个输出证实了 contains()
方法正确识别出 "Banana" 在列表中,而 "Grape" 不在列表中。
理解如何检查元素是否存在是在 Java 中处理集合时的一项基本技能。在接下来的步骤中,我们将进一步探讨 contains()
方法的更多方面,以及它在不同场景下的表现。
在上一步中,我们对存储 String
对象的 List
使用了 contains()
方法。contains()
方法非常通用,可以用于存储不同类型元素的集合,例如数字、自定义对象,甚至其他集合。
使用 contains()
方法时,Java 会依赖集合中对象的 equals()
方法来判断要查找的元素是否匹配。对于基本数据类型(如 int
、double
、boolean
),会使用它们对应的包装类(Integer
、Double
、Boolean
),这些包装类的 equals()
方法会比较值。对于对象,默认的 equals()
方法会检查两个对象引用是否指向同一个内存位置。不过,许多类(如 String
、Integer
等)会重写 equals()
方法,以比较对象的实际内容或值。
让我们修改程序,使其处理存储 Integer
对象的 List
,看看 contains()
方法的表现。
在 WebIDE 编辑器中打开 HelloJava.java
文件。
将当前代码替换为以下代码:
import java.util.ArrayList;
import java.util.List;
public class HelloJava {
public static void main(String[] args) {
// Create a List of integers
List<Integer> numbers = new ArrayList<>();
// Add some numbers to the list
numbers.add(10);
numbers.add(25);
numbers.add(5);
numbers.add(50);
// Check if the list contains 25
boolean hasTwentyFive = numbers.contains(25);
System.out.println("Does the list contain 25? " + hasTwentyFive);
// Check if the list contains 100
boolean hasOneHundred = numbers.contains(100);
System.out.println("Does the list contain 100? " + hasOneHundred);
// Check if the list contains the Integer object with value 5
boolean hasFiveObject = numbers.contains(Integer.valueOf(5));
System.out.println("Does the list contain Integer object with value 5? " + hasFiveObject);
}
}
在这段代码中:
Integer
对象的 List
:List<Integer> numbers = new ArrayList<>();
。numbers.add()
方法向列表中添加整数值。Java 会自动将基本数据类型 int
的值(10、25、5、50)转换为 Integer
对象(这称为自动装箱)。numbers.contains(25)
和 numbers.contains(100)
来检查整数值是否存在。同样,Java 会在执行检查之前将基本数据类型 int
的值 25 和 100 自动装箱为 Integer
对象。Integer.valueOf(5)
显式创建了一个 Integer
对象,并检查列表中是否包含这个特定的对象。保存文件。
在终端中编译程序:
javac HelloJava.java
运行程序:
java HelloJava
你应该会看到类似以下的输出:
Does the list contain 25? true
Does the list contain 100? false
Does the list contain Integer object with value 5? true
这表明 contains()
方法可以正确处理 Integer
对象,并比较它们的值。contains()
方法实际上使用了集合中元素和要查找元素的 equals()
方法。
在下一步中,我们将探讨一个特殊情况:使用 contains()
方法处理 null
元素。
null
元素在 Java 中,集合有时可能包含 null
元素。了解 contains()
方法在处理 null
元素时的行为非常重要。
好消息是,contains()
方法被设计为能够优雅地处理 null
元素。如果集合中包含 null
,调用 contains(null)
会返回 true
;如果集合中不包含 null
,则返回 false
。这与 equals()
方法通常对 null
的处理方式一致(任何对象的 equals(null)
应该返回 false
,但如果集合的 contains
实现没有在内部处理,null.equals(anyObject)
会抛出 NullPointerException
)。
让我们修改程序,以包含并检查 null
元素。
在 WebIDE 编辑器中打开 HelloJava.java
文件。
将当前代码替换为以下代码:
import java.util.ArrayList;
import java.util.List;
public class HelloJava {
public static void main(String[] args) {
// Create a List that can contain null
List<String> mixedList = new ArrayList<>();
// Add some elements, including null
mixedList.add("First");
mixedList.add(null); // Adding a null element
mixedList.add("Second");
mixedList.add(null); // Adding another null element
mixedList.add("Third");
// Check if the list contains null
boolean hasNull = mixedList.contains(null);
System.out.println("Does the list contain null? " + hasNull);
// Check if the list contains a non-existent element
boolean hasFourth = mixedList.contains("Fourth");
System.out.println("Does the list contain Fourth? " + hasFourth);
// Check if the list contains "First"
boolean hasFirst = mixedList.contains("First");
System.out.println("Does the list contain First? " + hasFirst);
}
}
在这段代码中:
mixedList
的 List
。String
元素,还使用 mixedList.add(null);
显式添加了 null
。mixedList.contains(null)
来检查列表中是否包含 null
值。null
的检查结果进行对比。保存文件。
在终端中编译程序:
javac HelloJava.java
运行程序:
java HelloJava
你应该会看到类似以下的输出:
Does the list contain null? true
Does the list contain Fourth? false
Does the list contain First? true
这个输出证实了 contains()
方法能够正确识别列表中 null
元素的存在。需要注意的是,集合可能包含 null
(具体取决于集合的类型和使用方式),而 contains()
方法为检查 null
元素提供了可靠的方式。
你现在已经学会了如何使用 contains()
方法来检查 Java 集合中的元素,包括不同的数据类型以及 null
这种特殊情况。这在你的 Java 程序中处理集合时是一个非常有用的工具。
在本次实验中,我们学习了如何在 Java 中使用 contains()
方法来检查集合是否包含特定元素。我们了解到,通过 Collection
接口提供的这个方法会返回一个布尔值,用于指示元素是否存在。我们通过 ArrayList
演示了该方法的使用,并观察到它能正确识别存在和不存在的元素。
我们还探讨了 contains()
方法如何处理不同的数据类型,以及如何处理集合中的 null
元素。通过这次实践,你对处理 Java 集合时的这一基本操作有了更实际的理解。