Проверка наличия элемента в массиве на 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() сравнивает содержимое строк.