Проверка наличия элемента в массиве на Java — несколько способов
Чтобы понять этот пример, вам нужно знать следующие темы Java:
массивы (
Arrays);примитивные типы данных Java.
Пример 1: проверка, содержит ли массив int заданное значение
class Main {
public static void main(String[] args) {
int[] num = {1, 2, 3, 4, 5};
int toFind = 3;
boolean found = false;
for (int n : num) {
if (n == toFind) {
found = true;
break;
}
}
if(found)
System.out.println(toFind + " is found.");
else
System.out.println(toFind + " is not found.");
}
}
Вывод:
3 is found.
В приведённой выше программе у нас есть массив целых чисел, сохранённый в переменной num. Также в переменной toFind сохранено число, которое нужно найти.
Затем мы используем цикл for-each для перебора всех элементов num и поочерёдно проверяем, равен ли toFind элементу n.
Если да — устанавливаем found в true и выходим из цикла. Если нет — переходим к следующей итерации.
Пример 2: проверка наличия значения в массиве с помощью Stream
import java.util.stream.IntStream;
class Main {
public static void main(String[] args) {
int[] num = {1, 2, 3, 4, 5};
int toFind = 7;
boolean found = IntStream.of(num).anyMatch(n -> n == toFind);
if(found)
System.out.println(toFind + " is found.");
else
System.out.println(toFind + " is not found.");
}
}
Вывод:
7 is not found.
В приведённой выше программе вместо цикла for-each мы преобразуем массив в IntStream и используем его метод anyMatch().
Метод anyMatch() принимает предикат — выражение или функцию, которая возвращает значение типа boolean. В нашем случае предикат сравнивает каждый элемент n потока со значением toFind и возвращает true или false.
Если хотя бы один элемент n возвращает true, переменной found также присваивается true.
Пример 3: проверка наличия значения для непримитивных типов
import java.util.Arrays;
class Main {
public static void main(String[] args){
String[] strings = {"One","Two","Three","Four","Five"};
String toFind= "Four";
boolean found = Arrays.stream(strings).anyMatch(t -> t.equals(toFind));
if(found)
System.out.println(toFind + " is found.");
else
System.out.println(toFind + " is not found.");
}
}
Вывод:
Four is found.
В приведённой выше программе мы использовали непримитивный тип данных String и применили метод stream() из класса Arrays, чтобы сначала превратить массив в поток, а затем anyMatch() для проверки наличия заданного значения toFind в массиве.
Подсказка
Для строк используется t.equals(toFind), а не t == toFind — потому что == сравнивает ссылки, а equals() сравнивает содержимое строк.