Для чего используется метод allMatch() в Java Stream API?

«Для чего используется метод allMatch() в Java Stream API?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Метод allMatch(Predicate<? super T> predicate) — это терминальная операция в Java Stream API, которая проверяет, удовлетворяют ли все элементы потока заданному условию (предикату).

  • Возвращает true, если все элементы потока соответствуют предикату или если поток пуст (вакуумная истина).
  • Возвращает false, если хотя бы один элемент не соответствует условию.

Пример: Проверка, что все числа в списке четные.

List<Integer> numbers = List.of(2, 4, 6, 8);
boolean allEven = numbers.stream()
                        .allMatch(n -> n % 2 == 0); // Возвращает true
System.out.println(allEven); // true

Пример с пустым потоком:

List<String> emptyList = List.of();
boolean result = emptyList.stream()
                         .allMatch(s -> s.length() > 5); // Возвращает true
System.out.println(result); // true

Практическое применение:

  • Валидация данных: Убедиться, что все объекты в коллекции имеют корректное состояние.
    List<User> users = getUserList();
    boolean allActive = users.stream()
                         .allMatch(User::isActive); // Все пользователи активны?
  • Проверка ограничений: Все ли значения находятся в допустимом диапазоне.

Важно: allMatch() — это короткозамыкающая операция. Обработка потока прекращается, как только встречается элемент, не удовлетворяющий условию.