Please open Telegram to view this post
VIEW IN TELEGRAM
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]
Рассмотрим еще примеры в следующих постах.
👩💻 Наш практический курс Java–разработчика
✅ 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]
Рассмотрим еще примеры в следующих постах.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое интерфейс в Java?
Anonymous Quiz
1%
Механизм обработки исключительных ситуаций
28%
Список доступных методов и свойств объекта
69%
Класс, определяющий общие методы для других классов
2%
Посмотреть ответ
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой будет результат работы следующей программы, используя Stream API Java?
✅ JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👆Объяснение к задаче выше:
Сначала создаётся список целых чисел из массива 1, 2, 3, 4, 5.
Затем этот список превращается в поток данных (Stream).
Далее выполняется фильтрация, оставляя только чётные числа (остаток при делении на 2 равен нулю).
Затем происходит преобразование каждого элемента потока в примитивный тип int, используя метод mapToInt().
Наконец, выполняется операция суммирования всех элементов потока с помощью метода sum().
В результате мы получаем сумму чётных чисел в списке, равную 6.
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Сначала создаётся список целых чисел из массива 1, 2, 3, 4, 5.
Затем этот список превращается в поток данных (Stream).
Далее выполняется фильтрация, оставляя только чётные числа (остаток при делении на 2 равен нулю).
Затем происходит преобразование каждого элемента потока в примитивный тип int, используя метод mapToInt().
Наконец, выполняется операция суммирования всех элементов потока с помощью метода sum().
В результате мы получаем сумму чётных чисел в списке, равную 6.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Stream API в Java. Часть 6.
В Stream API Java пока мы не вызвали терминальный метод, ничего не происходит. Все потому, что конвейерные методы ленятся (они lazy). Это значит, что они обрабатывают данные и ждут команды, чтобы передать их терминальному методу.
Перечислим часто встречающиеся Конвейерные (или Промежуточные) операторы стримов.
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
В Stream API Java пока мы не вызвали терминальный метод, ничего не происходит. Все потому, что конвейерные методы ленятся (они lazy). Это значит, что они обрабатывают данные и ждут команды, чтобы передать их терминальному методу.
Перечислим часто встречающиеся Конвейерные (или Промежуточные) операторы стримов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Stream API в Java. Часть 7.
После того как мы поработали с нашим стримом (или потоком) каких-либо элементов (стрим списка любых кастомных моделей Java, например, класс Car или просто список строк или объектов Integer) нужно завершить эту работу с помощью терминального оператора.
Перечислим часто встречающиеся Терминальные операторы стримов в Java.
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
После того как мы поработали с нашим стримом (или потоком) каких-либо элементов (стрим списка любых кастомных моделей Java, например, класс Car или просто список строк или объектов Integer) нужно завершить эту работу с помощью терминального оператора.
Перечислим часто встречающиеся Терминальные операторы стримов в Java.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой синтаксис простейшего лямбда выражения в Java?
Anonymous Quiz
5%
{expression} –> parameters
57%
(parameters) –> expression
15%
(expression) –> parameters
13%
(parameters) => expression
10%
Посмотреть ответ
Stream API в Java. Часть 8.
Подробнее изучите метод .collect(). Он позволяет гибко управлять преобразованием значений в разные типы: коллекции, массивы, map. Делается это благодаря статистическим методам Collectors.
Вот несколько интересных примеров:
toList — стрим приводится к списку;
toCollection — получаем коллекцию;
toSet — получаем множество;
toConcurrentMap, toMap — если нужен map;
summingInt, summingDouble, summingLong — если требуется получить сумму чисел;
averagingInt, averagingDouble, averagingLong — если хотите вернуть среднее значение;
groupingBy — если необходимо разбить коллекцию на части.
Это не все статистические методы Collectors. Другие возможности с подробным описанием смотрите в документации. Помимо тех Collectors, которые определены в документации, можно использовать собственноручно созданные, кастомные варианты)
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Подробнее изучите метод .collect(). Он позволяет гибко управлять преобразованием значений в разные типы: коллекции, массивы, map. Делается это благодаря статистическим методам Collectors.
Вот несколько интересных примеров:
toList — стрим приводится к списку;
toCollection — получаем коллекцию;
toSet — получаем множество;
toConcurrentMap, toMap — если нужен map;
summingInt, summingDouble, summingLong — если требуется получить сумму чисел;
averagingInt, averagingDouble, averagingLong — если хотите вернуть среднее значение;
groupingBy — если необходимо разбить коллекцию на части.
Это не все статистические методы Collectors. Другие возможности с подробным описанием смотрите в документации. Помимо тех Collectors, которые определены в документации, можно использовать собственноручно созданные, кастомные варианты)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM