如何检查Java数组是否包含值?
时间:2020-02-23 14:36:21 来源:igfitidea点击:
如何检查Java数组是否包含值?
检查Java数组是否包含特定值的方法有很多。
- 使用for循环的简单迭代
- 列出contains()方法
- 流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<String> vowelsList = Arrays.asList(vowels);
vowelsList ==> [A, I, E, O, U]
jshell> vowelsList.contains("U")
==> true
jshell> vowelsList.contains("X")
==> false
3.使用Stream anyMatch()方法
如果使用Java 8或者更高版本,则可以从数组创建流。
然后使用带有lambda表达式的anyMatch()方法来检查它是否包含给定值。
jshell> List<String> vowelsList = Arrays.asList(vowels);
vowelsList ==> [A, I, E, O, U]
jshell> Arrays.stream(vowels).anyMatch("O"::equals);
==> true
jshell> Arrays.stream(vowels).anyMatch("X"::equals);
==> false
4.数组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);

