Какое значение возвращает Stream.allMatch() для пустого потока?

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

Ответ

Метод allMatch() возвращает true для любого пустого Stream, независимо от заданного предиката.

Объяснение: Это поведение соответствует принципу «пустой истины» (vacuous truth) в логике. Утверждение «все элементы пустого множества удовлетворяют условию P» считается истинным по определению, так как не существует элемента, который бы его нарушал.

Пример:

Stream<String> emptyStream = Stream.empty();
boolean result = emptyStream.allMatch(s -> s.length() > 10); // Возвращает true
System.out.println(result); // true

Аналогичное поведение:

  • anyMatch() для пустого потока всегда возвращает false.
  • noneMatch() для пустого потока всегда возвращает true.