Карта / Stream API и лямбды / Функциональные интерфейсы

Функциональные интерфейсы

Функциональные интерфейсы — то, что принимают методы вроде filter или map (интерфейс с одной абстрактной функцией):

  • Predicate<T> — проверка, возвращает boolean (для filter);
  • Function<T,R> — преобразование (для map);
  • Consumer<T> — действие без возврата (для forEach);
  • Supplier<T> — поставщик значения.
Predicate<String> isLong = name -> name.length() > 3;
Function<String, String> upper = name -> name.toUpperCase();

Лямбда сама по себе — просто кусок кода. Чтобы её можно было передать в метод, нужен тип — функциональный интерфейс, который описывает, какую сигнатуру (вход/выход) эта функция должна иметь.

🎤 Закрыл тему, если можешь объяснить:
• что такое функциональный интерфейс и зачем он нужен лямбде;
• чем `Predicate`, `Function`, `Consumer` и `Supplier` отличаются друг от друга.