Лямбда-функции — это анонимные функции, которые можно сохранять и передавать как обычные переменные.
Общий вид лямбды (параметры) -> выражение
или (параметры) -> {операторы;}
. Стрелка — это лямбда-оператор.
Чаще всего используются три функциональных интерфейса:
// Допустим, нам нужно вывести на экран
// список домашних животных и вернуть только имена питомцев,
// отсортированные по алфавиту
List<Map<String, String>> animals = List.of(
Map.of("name", "Spooky", "animal", "dog"),
Map.of("name", "Tom", "animal", "cat"),
Map.of("name", "Jimmy", "animal", "bird"),
Map.of("name", "Buddy", "animal", "dog"),
Map.of("name", "Elsa", "animal", "dog"),
Map.of("name", "Murka", "animal", "cat")
);
// Создадим метод getPetNames() в классе AppExample
// Для этого будем использовать Stream API и лямбды
class AppExample {
public static List<String> getPetNames(List<Map<String, String>> animals, String animal) {
return animals.stream()
// Сначала отфильтруем всех питомцев, например только собак
// Метод filter принимает в качестве параметра Predicate
// Лямбда принимает вид питомца и возвращает true, если оно совпадает с требуемым
.filter(pet -> pet.get("animal").equals(animal))
// Затем сделаем отображение, оставим только имя питомца
// Метод map принимает на вход Function
// Она принимает текущий элемент стрима и возвращает новый измененный
.map(pet -> pet.get("name"))
// Сортируем имена
// Метод sorted принимает на вход Function
// Лямбда принимает два соседних элемента стрима и возвращает 1, 0 или -1
// в зависимости от того, больше ли первый элемент чем второй, равен или меньше
.sorted((name1, name2) -> name1.compareTo(name2))
.collect(Collectors.toList());
}
}
AppExample.getPetNames(animals, "dog"); // [Buddy, Elsa, Spooky]
Вам ответят команда поддержки Хекслета или другие студенты.
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
Наши выпускники работают в компаниях:
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
Зарегистрируйтесь или войдите в свой аккаунт