如何检查 Java 数组是否包含值?
如何检查 Java 数组是否包含某个值?
有很多方法可以检查 Java 数组是否包含特定值。
- 使用 for 循环进行简单迭代
- 列表包含()方法
- 流 anyMatch() 方法
- 数组 binarySearch() 用于排序数组
让我们逐一研究一下这些方法。
1.使用 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 类来获取数组的列表表示。然后使用 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或更高版本,则可以从数组创建一个流。然后使用带有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. 数组 binarySearch() 用于排序数组
如果您的数组已排序,您可以使用数组 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);
输出:元音包含子集中的所有元素= true