Что такое лямбда-выражение в Java?
Anonymous Quiz
3%
Метод, который используется для создания объектов
69%
Анонимная функция, которая может быть передана в качестве аргумента другому методу
10%
Условный оператор, который позволяет выбирать между двумя или более вариантами ответа
18%
Другими словами это анонимный класс
👍3🔥2✍1🎉1
Лямбды, анонимные классы и обычные классы в Java. Часть 4.
Как уже было написано, лямбда-выражения могут заменить анонимные классы, которые реализуют функциональные интерфейсы, но в остальных случаях анонимные классы не теряют актуальности.
Если одно и то же лямбда-выражение (или анонимный класс) используется в нескольких случаях, то появляется смысл сделать его членом класса или объекта, или и вовсе написать полноценный класс, реализующий необходимый интерфейс.
Но в большинстве случаев, там где можно применять лямбда-выражения, например в Stream (поговорим далее), Optional (поговорим далее) или CompletableFuture, логичнее применять именно лямбды.
👉 JavaStart. Подписаться
Как уже было написано, лямбда-выражения могут заменить анонимные классы, которые реализуют функциональные интерфейсы, но в остальных случаях анонимные классы не теряют актуальности.
Если одно и то же лямбда-выражение (или анонимный класс) используется в нескольких случаях, то появляется смысл сделать его членом класса или объекта, или и вовсе написать полноценный класс, реализующий необходимый интерфейс.
Но в большинстве случаев, там где можно применять лямбда-выражения, например в Stream (поговорим далее), Optional (поговорим далее) или CompletableFuture, логичнее применять именно лямбды.
👉 JavaStart. Подписаться
👍7❤1⚡1🔥1👨💻1
🔥4👍3🎉1
Stream API в Java. Часть 1.
Поговорим об одном из самых важных разделов Java, о котором обязательно спрашивают джунов или стажеров на собеседовании - это Stream API.
И так, что такое Stream API?
Stream API называют фреймворк для работы со структурами данных в функциональном стиле. Появился в Java 8 вместе с лямбда-выражениями, а это было аж в 2014 году.
Stream (поток) API (описание способов, которыми одна компьютерная программа может взаимодействовать с другой программой) — это по своей сути поток данных.
С появлением в Java 8 Stream API позволило программистам писать существенно короче то, что раньше занимало много строк кода, а именно — упростить работу с наборами данных, в частности, упростить операции фильтрации, сортировки и другие манипуляции с данными. Например, с коллекциями (List, Map, array и др.).
C чего, собственно, начать?
С создания экземпляра Stream, который опирается на нужную нам коллекцию, откуда соответственно будут браться данные, и метод .stream().
А далее со стримом можно делать все необходимое – об этом далее)
👉 JavaStart. Подписаться
Поговорим об одном из самых важных разделов Java, о котором обязательно спрашивают джунов или стажеров на собеседовании - это Stream API.
И так, что такое Stream API?
Stream API называют фреймворк для работы со структурами данных в функциональном стиле. Появился в Java 8 вместе с лямбда-выражениями, а это было аж в 2014 году.
Stream (поток) API (описание способов, которыми одна компьютерная программа может взаимодействовать с другой программой) — это по своей сути поток данных.
С появлением в Java 8 Stream API позволило программистам писать существенно короче то, что раньше занимало много строк кода, а именно — упростить работу с наборами данных, в частности, упростить операции фильтрации, сортировки и другие манипуляции с данными. Например, с коллекциями (List, Map, array и др.).
C чего, собственно, начать?
С создания экземпляра Stream, который опирается на нужную нам коллекцию, откуда соответственно будут браться данные, и метод .stream().
А далее со стримом можно делать все необходимое – об этом далее)
👉 JavaStart. Подписаться
👍12🔥4✍3❤2⚡1
Какой интерфейс необходим для использования лямбда-выражения?
Anonymous Quiz
7%
Runnable
5%
Serializable
53%
Функциональный интерфейс
17%
Анонимный интерфейс
19%
Никакой
👍8❤1🔥1👨💻1
Анонс видео на Ютуб канале про Конструктор в Java.
Друзья, на нашем YouTube канале вышел короткий и очень наглядный ролик под названием “Конструкторы в Java простыми словами”.
Переходите по ссылке и смотрите скорее! И конечно же подписывайтесь на наш канал JavaStart, чтобы не пропустить следующие обучающие видеоуроки по нашей любимой Java👩💻
https://www.youtube.com/watch?v=PGvMGHZKHtM&ab_channel=JavaStart
👉 JavaStart. Подписаться
Друзья, на нашем YouTube канале вышел короткий и очень наглядный ролик под названием “Конструкторы в Java простыми словами”.
Переходите по ссылке и смотрите скорее! И конечно же подписывайтесь на наш канал JavaStart, чтобы не пропустить следующие обучающие видеоуроки по нашей любимой Java
https://www.youtube.com/watch?v=PGvMGHZKHtM&ab_channel=JavaStart
👉 JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥5❤1👏1
Stream API в Java. Часть 2.
Давайте рассмотрим применение Stream API на самом простом примере, но который можно считать вполне боевым (из коммерческой разработки).
Предположим, у нас есть список интовых чисел и нам нужно вывести конкретные числа из списка, подходящие под наш алгоритм:
Берем сначала все числа меньше 90, прибавляем к каждому числу цифру 10, выводим первые 3 числа из получившегося списка.
На выходе в консоли мы получаем числа 60, 70 и 80.
Пример без потока на Картинке 1.
Обратите внимание, насколько код читабельнее и лаконичнее с применением Stream API на Картинке 2.
Рассмотрим подробнее Картинку 2. Что мы там делаем?
– Создаем стрим (поток) целых чисел из данного списка с помощью метода .stream();
– Фильтруем наш поток чисел методом .filter(условие). Берем только те, которые меньше 90. Переменная x приравнивается к одному элементу коллекции для перебора;
– Прибавляем к каждому полученному в потоке числу цифру 10 с помощью Stream метода .map(операция). Переменная x приравнивается к одному элементу коллекции для перебора;
– Ограничиваем наш конечный поток только 3-мя элементами (числами в нашем случае) с помощью метода .limit(число);
– Печатаем в консоль каждый элемент, который присутствует в конечном потоке. Выражение System.out::println сокращенно от:
x -> System.out.println(x)).
Много интересных методов, которых нам предоставляет фреймворк Stream API)
Рассмотрим их далее в постах.
Кстати, для лучшей читабельности методы стрима принято писать с новой строки. Но это не обязательно.
👉 JavaStart. Подписаться
Давайте рассмотрим применение Stream API на самом простом примере, но который можно считать вполне боевым (из коммерческой разработки).
Предположим, у нас есть список интовых чисел и нам нужно вывести конкретные числа из списка, подходящие под наш алгоритм:
Берем сначала все числа меньше 90, прибавляем к каждому числу цифру 10, выводим первые 3 числа из получившегося списка.
На выходе в консоли мы получаем числа 60, 70 и 80.
Пример без потока на Картинке 1.
Обратите внимание, насколько код читабельнее и лаконичнее с применением Stream API на Картинке 2.
Рассмотрим подробнее Картинку 2. Что мы там делаем?
– Создаем стрим (поток) целых чисел из данного списка с помощью метода .stream();
– Фильтруем наш поток чисел методом .filter(условие). Берем только те, которые меньше 90. Переменная x приравнивается к одному элементу коллекции для перебора;
– Прибавляем к каждому полученному в потоке числу цифру 10 с помощью Stream метода .map(операция). Переменная x приравнивается к одному элементу коллекции для перебора;
– Ограничиваем наш конечный поток только 3-мя элементами (числами в нашем случае) с помощью метода .limit(число);
– Печатаем в консоль каждый элемент, который присутствует в конечном потоке. Выражение System.out::println сокращенно от:
x -> System.out.println(x)).
Много интересных методов, которых нам предоставляет фреймворк Stream API)
Рассмотрим их далее в постах.
Кстати, для лучшей читабельности методы стрима принято писать с новой строки. Но это не обязательно.
👉 JavaStart. Подписаться
👍9✍3❤2🔥2
Stream API в Java. Часть 3.
Возможные способы создания Stream:
– Пустой стрим: Stream.empty()
– Стрим из List: list.stream()
– Стрим из Map: map.entrySet().stream()
– Стрим из массива: Arrays.stream(array)
– Стрим из указанных элементов (в данном случае строк – в ковычках): Stream.of("1", "2", "3")
👉 JavaStart. Подписаться
Возможные способы создания Stream:
– Пустой стрим: Stream.empty()
– Стрим из List: list.stream()
– Стрим из Map: map.entrySet().stream()
– Стрим из массива: Arrays.stream(array)
– Стрим из указанных элементов (в данном случае строк – в ковычках): Stream.of("1", "2", "3")
👉 JavaStart. Подписаться
👍17⚡2✍2❤1🫡1
Stream API в Java. Часть 4.
По сути методы класса Stream называются операторами.
Вопрос о видах Stream операторов часто всплывает на собеседованиях Java джунам или стажерам. Чтобы понимать, насколько вы знаете теорию)
Операторы можно разделить на две группы:
– Промежуточные (“intermediate”, ещё называют “lazy”) — обрабатывают поступающие элементы и возвращают стрим. Промежуточных операторов в цепочке обработки элементов может быть много. В некоторых источниках Промежуточные операторы называются Конвейерными.
– Терминальные (“terminal”, ещё называют “eager”) — обрабатывают элементы и завершают работу стрима, так что терминальный оператор в цепочке может быть только один.
Что происходит на первой картинке?
– Создаём список list;
– Заполняем его тестовыми данными;
– Создаем стрим;
– Метод .filter() (фильтр) — промежуточный оператор, переменная x приравнивается к одному элементу коллекции для перебора (как при for each) и после -> мы указываем как фильтруется наша коллекция и так как это промежуточный оператор, отфильтрованная коллекция идёт дальше в метод .forEach(), который в свою очередь, является терминальным (конечным) аналогом перебора for each.
Выражение System.out::println сокращенно от:
x -> System.out.println(x),
которое в свою очередь, проходит по всем элементам переданной ему коллекции и выводит её.
– На выходе получаем строку One.
👉 JavaStart. Подписаться
По сути методы класса Stream называются операторами.
Вопрос о видах Stream операторов часто всплывает на собеседованиях Java джунам или стажерам. Чтобы понимать, насколько вы знаете теорию)
Операторы можно разделить на две группы:
– Промежуточные (“intermediate”, ещё называют “lazy”) — обрабатывают поступающие элементы и возвращают стрим. Промежуточных операторов в цепочке обработки элементов может быть много. В некоторых источниках Промежуточные операторы называются Конвейерными.
– Терминальные (“terminal”, ещё называют “eager”) — обрабатывают элементы и завершают работу стрима, так что терминальный оператор в цепочке может быть только один.
Что происходит на первой картинке?
– Создаём список list;
– Заполняем его тестовыми данными;
– Создаем стрим;
– Метод .filter() (фильтр) — промежуточный оператор, переменная x приравнивается к одному элементу коллекции для перебора (как при for each) и после -> мы указываем как фильтруется наша коллекция и так как это промежуточный оператор, отфильтрованная коллекция идёт дальше в метод .forEach(), который в свою очередь, является терминальным (конечным) аналогом перебора for each.
Выражение System.out::println сокращенно от:
x -> System.out.println(x),
которое в свою очередь, проходит по всем элементам переданной ему коллекции и выводит её.
– На выходе получаем строку One.
👉 JavaStart. Подписаться
👍8❤3⚡2🔥1👨💻1
Stream API в Java. Часть 5.
Давайте рассмотрим на практике, на примере несложных задач, как работать с разными методами Stream API.
Допустим, у нас есть коллекция состоящая из строк:
List<String> strings = Arrays.asList("Highload", "High", "Load", "Highload").
Применим к ней разные методы.
1) Посчитаем, сколько раз объект "High" встречается в коллекции:
strings.stream().filter("High"::equals).count()
// 1
equals – это метод, который есть у каждого объекта типа String.
2) А теперь посмотрим, какой элемент в коллекции находится на первом месте. Если мы получили пустую коллекцию, то пусть возвращается 0:
strings.stream().findFirst().orElse("0")
// Highload
3) Благодаря методам .filter(условие) и .findFirst() можно находить элементы, равные заданным в условии:
strings.stream().filter("Load"::equals).findFirst().get()
// Load
4) С помощью метода .skip(число long) можно искать элементы по порядку. Например, пропустить первый и вывести второй:
strings.stream().skip(1).findFirst().get()
// High
5) Можно также использовать методы .skip(число long) и .limit(число long), чтобы явно задавать, сколько элементов нужно пропустить, а сколько — вернуть. Полученные значения соберем в массив:
strings.stream().skip(1).limit(2).toArray()
// [High, Load]
Ну как? Старался объяснять максимально понятно!)
Рассмотрим еще примеры в следующих постах.
👉 JavaStart. Подписаться
Давайте рассмотрим на практике, на примере несложных задач, как работать с разными методами Stream API.
Допустим, у нас есть коллекция состоящая из строк:
List<String> strings = Arrays.asList("Highload", "High", "Load", "Highload").
Применим к ней разные методы.
1) Посчитаем, сколько раз объект "High" встречается в коллекции:
strings.stream().filter("High"::equals).count()
// 1
equals – это метод, который есть у каждого объекта типа String.
2) А теперь посмотрим, какой элемент в коллекции находится на первом месте. Если мы получили пустую коллекцию, то пусть возвращается 0:
strings.stream().findFirst().orElse("0")
// Highload
3) Благодаря методам .filter(условие) и .findFirst() можно находить элементы, равные заданным в условии:
strings.stream().filter("Load"::equals).findFirst().get()
// Load
4) С помощью метода .skip(число long) можно искать элементы по порядку. Например, пропустить первый и вывести второй:
strings.stream().skip(1).findFirst().get()
// High
5) Можно также использовать методы .skip(число long) и .limit(число long), чтобы явно задавать, сколько элементов нужно пропустить, а сколько — вернуть. Полученные значения соберем в массив:
strings.stream().skip(1).limit(2).toArray()
// [High, Load]
Ну как? Старался объяснять максимально понятно!)
Рассмотрим еще примеры в следующих постах.
👉 JavaStart. Подписаться
🔥10👍5❤3✍1