如何检查 Java 数组是否包含一个值?

如何检查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

Java Array Contains Value

使用流 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

参考

  1. Arrays binarySearch() API Doc
  2. Stream anyMatch() API Doc
Published At
Categories with 技术
Tagged with
comments powered by Disqus