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
Stream API в Java. Часть 9.
Давайте поиграемся с методами .min() и .max().
Пусть у нас будет коллекция строк вида Arrays.asList("f10", "f15", "f2", "f4").
Нужно найти самый маленький элемент:
collection.stream().min(String::compareTo).get()
// f2
Метод compareTo() – это метод, который есть у каждого объекта типа String.
С максимальным значением тоже все очень просто:
collection.stream().max(String::compareTo).get()
// f15
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Давайте поиграемся с методами .min() и .max().
Пусть у нас будет коллекция строк вида Arrays.asList("f10", "f15", "f2", "f4").
Нужно найти самый маленький элемент:
collection.stream().min(String::compareTo).get()
// f2
Метод compareTo() – это метод, который есть у каждого объекта типа String.
С максимальным значением тоже все очень просто:
collection.stream().max(String::compareTo).get()
// f15
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Stream API в Java. Часть 10.
Посмотрим несколько примеров работы сортирующих методов Stream API.
Используем ту же коллекцию строк, что и выше —
Stream.of("f10", "f15", "f2", "f4", "f4").
Единственное отличие — теперь в нем появился дубликат.
Первая задача — отсортировать строки в алфавитном порядке и добавить их в массив:
collection.stream().sorted().collect(Collectors.toList());
// [f2, f4, f4, f10, f15]
А вот чуть более интересное задание — нужно выполнить сортировку в обратном алфавитному порядке и удалить дубликаты. В массиве должны оказаться только уникальные значения:
collection.stream().sorted(String::compareTo).distinct().collect(Collectors.toList());
Здесь мы используем не только .sorted() для сортировки, но и метод .distinct() для удаления неуникальных значений при обработке коллекции.
Задачи по сортировке стримов в Java часто встречаются на собеседованиях не только на позицию Junior разработчиков, но даже и на позицию Middle!
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Посмотрим несколько примеров работы сортирующих методов Stream API.
Используем ту же коллекцию строк, что и выше —
Stream.of("f10", "f15", "f2", "f4", "f4").
Единственное отличие — теперь в нем появился дубликат.
Первая задача — отсортировать строки в алфавитном порядке и добавить их в массив:
collection.stream().sorted().collect(Collectors.toList());
// [f2, f4, f4, f10, f15]
А вот чуть более интересное задание — нужно выполнить сортировку в обратном алфавитному порядке и удалить дубликаты. В массиве должны оказаться только уникальные значения:
collection.stream().sorted(String::compareTo).distinct().collect(Collectors.toList());
Здесь мы используем не только .sorted() для сортировки, но и метод .distinct() для удаления неуникальных значений при обработке коллекции.
Задачи по сортировке стримов в Java часто встречаются на собеседованиях не только на позицию Junior разработчиков, но даже и на позицию Middle!
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
Ответ к задаче про сравнение строк:
Первое, что нужно отметить, что тут сравниваются не значения строк, а ссылки на строки. Поэтому IDE подчёркивает все равенства и предлагает правильный вариант сравнения значений строк через “equals”.
s1 и s2 это один и тот же объект, так как в Java есть пул строк, и для s2 не создается новый объект, так как в пуле уже есть строка с таким же значением.
А вот s3 создаётся через new и в пул строк не попадает. Поэтому s1 и s3 - это разные объекты, поэтому сравнение вернёт false.
s4 будет гарантированно из пула, так как вызван метод intern.
s5 работает аналогично s2.
Выводы:
1) Сравнивая объекты через == , можно не всегда получить то, что ожидаешь, поэтому лучше этого не делать и использовать метод equals. Сравнивая через ==, вы должны знать что делаете.
2) Если IDE подчёркивает код, стоит обратить на это внимание, скорее всего у вас проблемы в коде.
3) Метод intern() перед созданием объекта String смотрит, есть ли этот объект в пуле стрингов и возвращает его. Иначе создается новый объект в пуле.
✅ JavaStart. Подписаться
Первое, что нужно отметить, что тут сравниваются не значения строк, а ссылки на строки. Поэтому IDE подчёркивает все равенства и предлагает правильный вариант сравнения значений строк через “equals”.
s1 и s2 это один и тот же объект, так как в Java есть пул строк, и для s2 не создается новый объект, так как в пуле уже есть строка с таким же значением.
А вот s3 создаётся через new и в пул строк не попадает. Поэтому s1 и s3 - это разные объекты, поэтому сравнение вернёт false.
s4 будет гарантированно из пула, так как вызван метод intern.
s5 работает аналогично s2.
Выводы:
1) Сравнивая объекты через == , можно не всегда получить то, что ожидаешь, поэтому лучше этого не делать и использовать метод equals. Сравнивая через ==, вы должны знать что делаете.
2) Если IDE подчёркивает код, стоит обратить на это внимание, скорее всего у вас проблемы в коде.
3) Метод intern() перед созданием объекта String смотрит, есть ли этот объект в пуле стрингов и возвращает его. Иначе создается новый объект в пуле.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Stream API в Java. Часть 11.
Stream в Java дает разработчикам удобные инструменты для обработки данных в коллекциях.
Методы позволяют проще обрабатывать объекты и писать меньше кода. Это так называемый “синтаксический сахар”.
Чтобы научиться работать эффективно с Java Stream API рекомендую просто практиковаться и в скором времени это станет для вас легко!
Раздел Stream API в Java несомненно встречается на собеседованиях на позиции Java Junior и Middle разработчиков. Поэтому разбираться в этом разделе нужно.
✅ JavaStart. Подписаться
Stream в Java дает разработчикам удобные инструменты для обработки данных в коллекциях.
Методы позволяют проще обрабатывать объекты и писать меньше кода. Это так называемый “синтаксический сахар”.
Чтобы научиться работать эффективно с Java Stream API рекомендую просто практиковаться и в скором времени это станет для вас легко!
Раздел Stream API в Java несомненно встречается на собеседованиях на позиции Java Junior и Middle разработчиков. Поэтому разбираться в этом разделе нужно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Каким образом данные связываются в реляционной базе данных?
Anonymous Quiz
4%
По совпадению идентификаторов
2%
По алфавиту
71%
По ключу–внешнему ключу
21%
По ID
2%
Посмотреть ответ
Какая команда используется для добавления изменений в индекс Git?
Anonymous Quiz
28%
git commit
55%
git add
9%
git push
2%
git pull
5%
Посмотреть ответ