如何检查 Java 数组中是否含有某特定值
作者:Pankaj
如何检查 Java 数组中是否含有某个特定值?
我们可以通过多种方法检查 Java 数组中是否含有某个特定值。
- 使用 for 循环进行简单迭代
- 使用 List 的 contains() 方法
- 使用 Stream 的 anyMatch() 方法
- 对排好序的数组使用 Array 的 binarySearch() 方法
本文的以下部分将带您一次性了解所有方法。
1. 使用 for 循环
要检查数组中是否包含某个值,最简单方便的方法就是使用 for 循环。我们将用 for 循环遍历数组元素,并使用 equals() 方法检查数组元素是否与给定值相等。
String[] vowels = { "A", "I", "E", "O", "U" };
// using simple iteration over the array elements 对数组元素进行简单迭代
for (String s : vowels) {
if ("E".equals(s)) {
System.out.println("E found in the vowels list.");
}
}
2. 使用 List(列表)的 contains() 方法
我们可以通过 Arrays(数组)类获取数组的列表(list)形式,然后使用 contains() 方法检查其中是否含有某个值。让我们用 JShell 运行以下示例代码。
jshell> String[] vowels = { "A", "I", "E", "O", "U" };
vowels ==> String[5] { "A", "I", "E", "O", "U" }
jshell> List vowelsList = Arrays.asList(vowels);
vowelsList ==> [A, I, E, O, U]
jshell> vowelsList.contains("U")
$3 ==> true
jshell> vowelsList.contains("X")
$4 ==> false
结果如下:
3. 使用 Stream 的 anyMatch() 方法
在 Java 8 或更新版本的 Java 中,您可以从数组中创建一个流(stream),然后通过 lambda 表达式使用 anyMatch() 方法来检查其中是否包含了给定的值。
jshell> List vowelsList = Arrays.asList(vowels);
vowelsList ==> [A, I, E, O, U]
jshell> Arrays.stream(vowels).anyMatch("O"::equals);
$5 ==> true
jshell> Arrays.stream(vowels).anyMatch("X"::equals);
$6 ==> false
4. 对排序过的数组使用 Arrays 的 binarySearch()方法
如果您的数组已完成排序,则可以直接使用 Arrays 的 binarySearch() 方法,检查数组中是否包含给定的值。
String[] vowels = { "A", "I", "E", "O", "U" };
System.out.println("Unsorted Array = " + Arrays.toString(vowels));
Arrays.parallelSort(vowels);
System.out.println("Sorted Array = " + Arrays.toString(vowels));
int index = Arrays.binarySearch(vowels, "X");
if (index < 0) {
System.out.println("X not found in the array");
} else {
System.out.println("X found in the array");
}
输出:
Unsorted Array = [A, I, E, O, U]
Sorted Array = [A, E, I, O, U]
X not found in the array
检查数组中是否包含给定的多个值
如果想检查数组是否包含给定的多个值,该怎么办呢?假设您要检查给定的数组是否是原数组的子集,可以创建嵌套循环,并一一检查每个元素。但还有一个更简洁的方法,是将数组转换为列表,然后使用 containsAll() 方法。
String[] vowels = { "A", "I", "E", "O", "U" };
String[] subset = { "E", "U" };
boolean foundAll = Arrays.asList(vowels).containsAll(Arrays.asList(subset));
System.out.println("vowels contains all the elements in subset = " + foundAll);
输出:vowels contains all the elements in subset = true