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 и числовые потоки.