Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

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

Короткий ответ

У массивов нет метода contains(). Для массива объектов проще всего обернуть его в список:

void main() {
    String[] colors = {"red", "green", "blue"};
 
    IO.println(Arrays.asList(colors).contains("green"));
    IO.println(Arrays.asList(colors).contains("black"));
}

Результат:

true
false

Массив чисел

Для int[] используйте поток:

void main() {
    int[] numbers = {4, 8, 15, 16};
    IO.println(Arrays.stream(numbers).anyMatch(n -> n == 15));
}

Результат:

true

Обычный цикл

Цикл понятен и находит позицию элемента:

int indexOf(int[] array, int value) {
    for (int i = 0; i < array.length; i++) {
        if (array[i] == value) {
            return i;
        }
    }
    return -1;
}
 
void main() {
    int[] numbers = {4, 8, 15, 16};
    IO.println(indexOf(numbers, 15));
    IO.println(indexOf(numbers, 42));
}

Результат:

2
-1

Отсортированный массив

В отсортированном массиве Arrays.binarySearch() находит элемент очень быстро. Неотрицательный результат — индекс найденного элемента:

void main() {
    int[] sorted = {2, 5, 9, 14, 20};
 
    IO.println(Arrays.binarySearch(sorted, 14));
    IO.println(Arrays.binarySearch(sorted, 7) >= 0);
}

Результат:

3
false

Частая ошибка

Вызвать Arrays.asList() у int[]. Получается список из одного элемента — самого массива, — и поиск всегда даёт false:

void main() {
    int[] numbers = {1, 2, 3};
 
    IO.println(Arrays.asList(numbers).size());
    IO.println(Arrays.asList(numbers).contains(2));
}

Результат:

1
false

Функции из этого ответа

  • Arrays.stream() — Создаёт поток (stream) из массива — для сумм, фильтров и преобразований.
  • Arrays.binarySearch() — Быстро ищет значение в отсортированном массиве делением пополам.
  • List.contains() — Проверяет, есть ли элемент в списке.
  • Arrays.asList() — Возвращает список фиксированного размера, который работает поверх массива.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.