Этап 4 из 11 · ≈ 8 ч

Лямбды и Stream API

Основа с Junior

Функциональные интерфейсы, лямбды, Optional, ленивые стримы и коллекторы.

Что важно знать

  • Функциональный интерфейс — один абстрактный метод: Function, Predicate, Supplier, Consumer.
  • Стрим ленивый: промежуточные операции выполняются при терминальной.
  • Collectors: toMap, groupingBy, partitioningBy, joining.
  • Optional — для возвращаемых значений, не для полей и параметров.
  • Параллельные стримы используют общий ForkJoinPool — опасно в сервере.

Критерии освоения

Junior ≈ 8 ч

  • Пишет лямбды и ссылки на методы и использует стандартные функциональные интерфейсы
  • Обрабатывает коллекции стримами — filter, map, collect, groupingBy

Практика. Переписать 10 циклов обработки списка заказов на стримы с группировкой и агрегацией.

Middle ≈ 6 ч

  • Объясняет ленивость стримов и порядок выполнения операций
  • Использует Optional по назначению и не злоупотребляет им
  • Знает, когда параллельный стрим вредит

Практика. Написать собственный Collector и замерить последовательный и параллельный стрим на разных объёмах.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Для чего предназначен Optional?Junior

Optional — контейнер «значение или пусто», который явно говорит, что результата может не быть, и заставляет это обработать.

Полный разбор
Чем промежуточные операции Stream отличаются от терминальных?Middle

Промежуточные операции (filter, map, sorted) ленивы и возвращают новый Stream — они только описывают конвейер. Терминальная (collect, forEach, count, findFirst) запускает обработку и возвращает результат или побочный эффект. Без терминальной ничего не…

Полный разбор
Что такое функциональный интерфейс?Junior

Функциональный интерфейс — интерфейс ровно с одним абстрактным методом (SAM); лямбда и ссылка на метод — его реализация.

Полный разбор
Как правильно использовать Optional?Middle

Optional — тип возвращаемого значения «результата может не быть», видимый в сигнатуре. Распаковывают через map, flatMap, filter, orElseGet, orElseThrow, а не isPresent() + get(). Не для полей, параметров и коллекций.

Полный разбор
Что такое Stream в Java?Junior

Stream — конвейер обработки элементов источника: данные не хранит и источник не меняет.

Полный разбор
Чем map, flatMap и filter отличаются в Stream API?Middle

map — один элемент → один элемент (преобразование). flatMap — один элемент → поток элементов, все потоки разворачиваются в один. filter — оставляет элементы, удовлетворяющие условию.

Полный разбор
Что делает терминальная операция collect?Junior

collect — терминальная операция, которая складывает результат конвейера в структуру: список, множество, карту, строку.

Полный разбор

Разборы темы

← Вся карта «Java»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования