JavaStart
917 subscribers
899 photos
28 videos
609 links
Учи Java вместе с нами!
Наша платформа с курсом - https://javastart.tech
Ютуб с обучающими видео - https://www.youtube.com/@javastart_tech
Download Telegram
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)
Рассмотрим их далее в постах.

Кстати, для лучшей читабельности методы стрима принято писать с новой строки. Но это не обязательно.

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63👨‍💻3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6👍5💯3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6👍5💯32
Какой символ используется, чтобы разделить ключ и значение в JSON?
Anonymous Quiz
65%
:
10%
;
11%
,
9%
=
5%
Посмотреть ответ
6👍3👨‍💻1
Stream API в Java. Часть 3.

Возможные способы создания Stream:

– Пустой стрим: Stream.empty()

– Стрим из List: list.stream()

– Стрим из Map: map.entrySet().stream()

– Стрим из массива: Arrays.stream(array)

– Стрим из указанных элементов (в данном случае строк – в ковычках): Stream.of("1", "2", "3")

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73👨‍💻2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁74💯3
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.

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4👨‍💻3
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. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁62👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Обслуживание сервера в сложных условиях)

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6👍4🔥4
Какой будет результат работы следующей программы, используя Stream API Java?

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👨‍💻4🔥2
👆Объяснение к задаче выше:

Сначала создаётся список целых чисел из массива 1, 2, 3, 4, 5.

Затем этот список превращается в поток данных (Stream).

Далее выполняется фильтрация, оставляя только чётные числа (остаток при делении на 2 равен нулю).

Затем происходит преобразование каждого элемента потока в примитивный тип int, используя метод mapToInt().

Наконец, выполняется операция суммирования всех элементов потока с помощью метода sum().

В результате мы получаем сумму чётных чисел в списке, равную 6.

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👨‍💻53
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4👍21🔥1
Stream API в Java. Часть 6.

В Stream API Java пока мы не вызвали терминальный метод, ничего не происходит. Все потому, что конвейерные методы ленятся (они lazy). Это значит, что они обрабатывают данные и ждут команды, чтобы передать их терминальному методу.

Перечислим часто встречающиеся Конвейерные (или Промежуточные) операторы стримов.

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52👨‍💻2