Что такое lambda-выражение?
Лямбда-выражение - это краткая форма записи реализации абстрактного метода функционального интерфейса, которая может быть передана в качестве параметра.
Что такое функциональные интерфейсы?
Функциональный интерфейс - это интерфейс, который содержат только один абстрактный метод, не считая методы класса Object.
Перечислите функциональные интерфейсы из пакета java.util.function.
Что такое функции высшего порядка?
Функции высшего порядка — это функции, которые принимают или возвращают другие функции.
Какие функциональные интерфейсы из пакета java.util.function поддерживают функции высшего порядка?
compose() - сначала выполнить указанную функцию, а затем применить текущую. Последовательность происходит в обратном порядке, чем при использовании andThen.
negate() - меняет результат текущего предиката на противоположный (true → false, false → true).
Что такое ссылки на методы?
Ссылки на методы (method references) — это сокращенный способ записи существующих методов в лямбда-выражении.
Типы ссылок:
Сигнатура ссылки на метод/конструктор должна совпадать с сигнатурой абстрактного метода функционального интерфейса.
Что такое ссылки на конструкторы?
Ссылки на конструкторы (ClassName::new) используются для создания объектов.
Расскажите о зоне видимости переменных в lambda – выражениях?
Как быть в ситуации, если внутри lambda - выражения операторы могут выкинуть исключение?
Что такое Stream API?
Stream API - это инструмент для обработки данных в функциональном стиле через цепочку операций. Позволяет: фильтровать, сортировать, преобразовывать, агрегировать и параллельно обрабатывать данные.
Особенности: потоки не изменяют исходные данные.
Расскажите, какие шаблоны проектирования используются внутри Stream API? (Builder, Strategy, Decorator, Factory Method, Pipeline).
Объясните, где они используются в Stream API.
Что такое конвейерные и терминальные операции?
Перечислите конвейерные (промежуточные) методы Stream API.
Дополнительные конвейерные методы для примитивных потоков:
Перечислите терминальные методы Stream API.
Что такое отложенный выполнение lamdba?
Промежуточные операции потока выполняются только при вызове терминальной операции.
Что делает метод filter()?
filter() - фильтрует элементы по предикату.
Промежуточная операция, возвращает новый поток с элементами, прошедшими фильтр.
Что делает метод map()?
map() - преобразует каждый элемент потока, применяя функцию и возвращает новый поток с результатами преобразования.
Что делает метод flatMap()?
flatMap() - объединяет вложенные потоки в один.
Что делает метод collect?
collect() - собирает элементы в коллекцию, массив и другую структуру данных.
Что делает метод findFirst?
findFirst() - возвращает первый элемент потока в виде Optional.
Что делает метод reduce?
reduce() - агрегирует элементы потока в одно значение. Ассоциативную бинарную операцию.
Применяться для суммирования, нахождения макс, произведения чисел, конкатенации строк и других операций, которые объединяют элементы потока в одно значение.
Что делают методы min и max?
min()/max() - возвращают минимальный/максимальный элемент потока по компаратору. Терминальная операция, возвращает Optional<T>.
Что делают методы count, sum, average?
<Integer>, необходимо использовать mapToInt() и затем применить sum().