Encodera

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

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

Справочник Java

Stream.findFirst()

Возвращает первый элемент потока в виде `Optional`.

Доступно с: Java 8

Синтаксис

Optional<T> findFirst()
Optional<T> findAny()

Возвращаемое значение

Optional<T>Первый элемент или пустой `Optional`, если поток пуст.

Примеры

Первый подходящий элемент:

void main() {
    List<String> emails = List.of("anna@mail.com", "oleg@work.org", "ivan@work.org");
    Optional<String> work = emails.stream().filter(e -> e.endsWith("work.org")).findFirst();
    IO.println(work.get());
    IO.println(emails.stream().filter(e -> e.endsWith(".net")).findFirst().orElse("not found"));
}

Результат:

oleg@work.org
not found

Примечания

Обычно идёт после filter() и работает как поиск: поток останавливается на первом найденном элементе. Результат — Optional, поэтому отсутствие значения обрабатывается через orElse(), ifPresent() и подобные методы. findAny() в параллельном потоке может вернуть любой подходящий элемент.

См. также

  • Stream.filter() — Оставляет в потоке только элементы, подходящие под условие.
  • Stream.anyMatch() — Проверяет, подходит ли под условие хотя бы один элемент.
  • Optional — Контейнер, в котором либо есть значение, либо его нет, — замена возврату `null`.
  • Optional.orElse() — Возвращает значение или запасной вариант, если значения нет.

Вопросы и ответы по теме

В учебнике

  • Операции над потоками — Основные операции Stream API — filter, map, sorted, distinct, limit, skip, count, reduce, anyMatch, findFirst и числовые потоки.

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

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