HTML Diff
1 added 2 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Начнем с типового примера использования лямбда-функций в Java. Обычно это метод, который работает с коллекцией и выполняет над ней какую-то операцию, основываясь на лямбде, переданной в метод как аргумент. В будущем мы познакомимся с Java Stream API, где этот подход применяется буквально на каждом шагу. А сейчас напишем свою реализацию фильтрации, чтобы собрать все изученное вместе и закрепить.</p>
1 <p>Начнем с типового примера использования лямбда-функций в Java. Обычно это метод, который работает с коллекцией и выполняет над ней какую-то операцию, основываясь на лямбде, переданной в метод как аргумент. В будущем мы познакомимся с Java Stream API, где этот подход применяется буквально на каждом шагу. А сейчас напишем свою реализацию фильтрации, чтобы собрать все изученное вместе и закрепить.</p>
2 <p>Фильтрация - это одна из самых популярных операций над коллекциями. В реальных приложениях постоянно надо удалять из коллекций элементы, которые не соответствуют условиям выборки. Например, мы можем захотеть выбрать только тех пользователей, у которых нет друзей. Как бы мы выполнили эту задачу обычным способом:</p>
2 <p>Фильтрация - это одна из самых популярных операций над коллекциями. В реальных приложениях постоянно надо удалять из коллекций элементы, которые не соответствуют условиям выборки. Например, мы можем захотеть выбрать только тех пользователей, у которых нет друзей. Как бы мы выполнили эту задачу обычным способом:</p>
3 <p>Какую бы мы ни взяли задачу, везде будет прослеживаться один и тот же обход коллекции с единственным отличием в том, как выполняется проверка. Очень похоже на сортировку, где сам алгоритм сортировки не меняется, а вот сравнение элементов зависит от того, какой порядок мы хотим получить. Применив такую же логику, мы можем спрятать обход списка, вынеся логику проверки в лямбда-функцию. Тогда на выходе мы получим такое решение:</p>
3 <p>Какую бы мы ни взяли задачу, везде будет прослеживаться один и тот же обход коллекции с единственным отличием в том, как выполняется проверка. Очень похоже на сортировку, где сам алгоритм сортировки не меняется, а вот сравнение элементов зависит от того, какой порядок мы хотим получить. Применив такую же логику, мы можем спрятать обход списка, вынеся логику проверки в лямбда-функцию. Тогда на выходе мы получим такое решение:</p>
4 <p>Фильтрация реализована как статический метод, где первый параметр это коллекция пользователей, второй функция-предикат, задача которой вернуть true или false для проверяемого пользователя. Если возвращается true, то элемент остается в коллекции, если false, то элемент удаляется. В результате возвращается новая коллекция, а старая не меняется. Ниже реализация этого метода.</p>
4 <p>Фильтрация реализована как статический метод, где первый параметр это коллекция пользователей, второй функция-предикат, задача которой вернуть true или false для проверяемого пользователя. Если возвращается true, то элемент остается в коллекции, если false, то элемент удаляется. В результате возвращается новая коллекция, а старая не меняется. Ниже реализация этого метода.</p>
5 <p>Самое необычное в этом коде это Predicate&lt;User&gt;. Здесь мы видим пример использования встроенного в Java функционального интерфейса Predicate&lt;T&gt;, с помощью которого можно создавать функции-предикаты, то есть функции, которые внутри себя выполняют какую-то проверку и возвращают true или false. T означает тип, который на вход принимает функция, в нашем случае это User. В соответствии с интерфейсом Predicate&lt;T&gt;, сама лямбда-функция вызывается через метод test(), куда передается проверяемый в данный момент пользователь.</p>
5 <p>Самое необычное в этом коде это Predicate&lt;User&gt;. Здесь мы видим пример использования встроенного в Java функционального интерфейса Predicate&lt;T&gt;, с помощью которого можно создавать функции-предикаты, то есть функции, которые внутри себя выполняют какую-то проверку и возвращают true или false. T означает тип, который на вход принимает функция, в нашем случае это User. В соответствии с интерфейсом Predicate&lt;T&gt;, сама лямбда-функция вызывается через метод test(), куда передается проверяемый в данный момент пользователь.</p>
6 - <p>Для более глубокого понимания темы мы рекомендуем просмотреть видео лекцию, которая является дополнительным материалом к данному курсу:</p>
6 + <p>Для более глубокого понимания темы мы рекомендуем просмотреть видео лекцию, которая является дополнительным материалом к данному курсу.</p>
7 - <p>!vimeo!(818921738)</p>