如何检查Java Array是否包含值?
有许多方法可以检查 Java 数组是否包含特定值。
- 简单的迭代使用循环
- 列表包含() 方法
- 流任何Match() 方法
- Arrays binarySearch() for sorted array
让我们一次看一下所有这些方法。
1、使用路径
我们将使用 for loop和使用 equals() 方法来检查该元素是否等于给定的值。
1String[] vowels = { "A", "I", "E", "O", "U" };
2
3// using simple iteration over the array elements
4for (String s : vowels) {
5 if ("E".equals(s)) {
6 System.out.println("E found in the vowels list.");
7 }
8}
使用列表包含() 方法
我们可以使用 Arrays class来获取数组的列表表示,然后使用 contains() 方法来检查数组是否包含该值。
1jshell> String[] vowels = { "A", "I", "E", "O", "U" };
2vowels ==> String[5] { "A", "I", "E", "O", "U" }
3
4jshell> List vowelsList = Arrays.asList(vowels);
5vowelsList ==> [A, I, E, O, U]
6
7jshell> vowelsList.contains("U")
8$3 ==> true
9
10jshell> vowelsList.contains("X")
11$4 ==> false
使用流 anyMatch() 方法
如果您正在使用 Java 8或更高版本,则可以从数组中创建 stream 然后使用 anyMatch() 方法与 lambda 表达式 来检查它是否包含给定值。
1jshell> List vowelsList = Arrays.asList(vowels);
2vowelsList ==> [A, I, E, O, U]
3
4jshell> Arrays.stream(vowels).anyMatch("O"::equals);
5$5 ==> true
6
7jshell> Arrays.stream(vowels).anyMatch("X"::equals);
8$6 ==> false
Arrays binarySearch() 用于分类的数组
如果您的数组被排序,您可以使用 Arrays binarySearch() 方法来检查数组是否包含给定的值。
1String[] vowels = { "A", "I", "E", "O", "U" };
2
3System.out.println("Unsorted Array = " + Arrays.toString(vowels));
4
5Arrays.parallelSort(vowels);
6
7System.out.println("Sorted Array = " + Arrays.toString(vowels));
8
9int index = Arrays.binarySearch(vowels, "X");
10
11if (index < 0) {
12 System.out.println("X not found in the array");
13} else {
14 System.out.println("X found in the array");
15}
出发点:
1Unsorted Array = [A, I, E, O, U]
2Sorted Array = [A, E, I, O, U]
3X not found in the array
检查 Array 是否包含多个值
如果我们想检查数组是否包含多个值,那么怎么办?假设你想检查一个给定的数组是否是源数组的子集?我们可以创建嵌套循环并检查每个元素一个接一个。
1String[] vowels = { "A", "I", "E", "O", "U" };
2String[] subset = { "E", "U" };
3
4boolean foundAll = Arrays.asList(vowels).containsAll(Arrays.asList(subset));
5
6System.out.println("vowels contains all the elements in subset = " + foundAll);
输出: vowels包含子集中的所有元素 = true