Рубрики
Без рубрики

Как проверить, содержит ли массив Java значение?

Как проверить, содержит ли массив Java определенное значение. Мы можем использовать для цикла, Список содержит() метод или потоковый API, чтобы проверить, присутствует ли значение в массиве.

Автор оригинала: Pankaj Kumar.

Как проверить, содержит ли массив Java значение?

Существует множество способов проверить, содержит ли массив Java определенное значение.

  • Простая итерация с использованием цикла for
  • Список содержит() метод
  • Метод Stream anyMatch()
  • Массивы BinarySearch() для отсортированного массива

Давайте рассмотрим все эти методы по одному.

1. Использование Для Цикла

Это самый простой и удобный способ проверить, содержит ли массив определенное значение или нет. Мы рассмотрим элементы массива с помощью цикла 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> 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 или выше, вы можете создать поток из массива. Затем используйте метод any Match() с лямбда-выражением, чтобы проверить, содержит ли оно заданное значение.

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. Двоичный поиск массивов() для отсортированного массива

Если ваш массив отсортирован, вы можете использовать метод двоичного поиска массивов (), чтобы проверить, содержит ли массив заданное значение или нет.

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);

Вывод : гласные содержат все элементы в

Рекомендации

  1. Массивы BinarySearch() API Doc
  2. Документ API Stream anyMatch()