Основы работы со Stream API в Java
Вставка
- Опубліковано 27 вер 2024
- В данном видео я попытался рассказать о базовых (исключительно практических) возможностях Stream API в языке Java.
Ссылки
Репозиторий с кодом из видео:
github.com/pro...
Книга по Java 11:
www.amazon.com...
Functional programming:
blogs.oracle.c...
Stream API:
www.oracle.com...
Нововведения Java 11:
www.oracle.com...
Этот мужик заслуживает больше лайков и подписчиков!
Посмотрев видео про стримы в начале изучения джавы, это видео казалось запутнным и сложным. Спустя 8 месяцев изучения джавы и поработав и написав пет проект с использованием спринга , и занявшесь уплотнением знаний стримов и т.д., наткнулся на видео снова , насколько же просто смотреть и все понимать )
мне после javascript и без явы всё понятно, в яваскрипте это по дефолту
Впервые до Java узнал о функциональном подходе в Python (цепочки методов map, reduce, filter, ...). Python - хороший язык для понимания функционального подхода в первый раз.
++++
Как здорово ты объясняешь, Евгений!!! Продолжай, пожалуйста!
Спасибо за отзыв, Наталья!
Спасибо за Ваш труд! Коммент в поддержку канала.
Спасибо за поддержку!
3:35
Стоит упомянуть, что при List.of и тп -> создается Unmodifiable (Immutable) коллекция
Т.е с ним нельзя проводить операции replace/add/remove
Блин, Женька как всегда красавчик) вот стримы - вот так вот с ними работать надо. Все понятно и без воды! спасибо
Спасибо за отзыв:)
Спасибо за видео, очень доступно объясняете. Понятные примеры со сравнением аналогичной логики программы с использованием старых методик(for, if..).
Побольше бы таких видео..
Спасибо за отзыв!
Спасибо, всё упорядочено, сгруппировано и, как следствие, просто.
Спасибо за отзыв!
Одно удовольствие смотреть твои обучающие видео.
Спасибо за отзыв!
Определенно лучшее видео!
Очень доступное объяснение, без воды и многословия.
Большое спасибо, Евгений. Очень хорошее понятное видео. Продолжайте, пожалуйста.
Спасибо за отзыв!
Ничего нового - Евгений как всегда всё разложил ну просто гениально.
Красавчик! Дай бог тебе здоровье и много много хорошего! Спасибо за твои видосы.
Спасибо :)
Отличное видео на примерах. Спасибо за материал. P.S. Будет здорово увидеть похожее видео по новым фичам из Java 11)))
Спасибо за отзыв. Есть наработки по этой теме, но, не знаю, когда смогу выложить видео
Сегодня это видео мне очень помогло, не знаю, чтобы я без него делал. Спасибо!
Спасибо за отзыв!
Рад, что материал оказался полезен.
Спасибо за хорошее видео. Было бы хорошо если вы продолжили снимать на примерах про нововведения Java 8, такие как: Лямбда, Optional, Функциональные интерфейсы
Respect! очень здорово объясняешь/ я как 20 дней изучаю сам Stream не смог сделать общую понятию про это/ спасибо тебе !!!! других новый материалов тоже объяснил бы так как сравнив со старой версий//// спасибо тебе !
Спасибо за отзыв, рад, что материал оказался полезен :)
Готовлюсь к собеседованию. Огромная благодарность за такой понятный урок!!!
комментарий для развития Вашего канала, спасибо за ценную информацию, успехов!
Спасибо!
пурум пурум))!
Супер продуктивно Евгений ! Спасибо !
Группировку старым способом я бы сделал по другому - не сначала запихал все специальности в мапу, а при обходе коллекции проверял на наличие ключа, если такой ключ есть, то добавляем сотрудника в лист значений, если нет, то создаем новый Entry. Да и цикл в старых способах нужно использовать foreach который - кода было бы гораздо меньше
Евгений, спасибо, крутой обзор
Как всегда топ контент. Спасибо.
Спасибо за труды! Ты молодец! 👍👍👍
Спасибо за отзыв :)
Спасибо, очень полезное практическое видео! Надеюсь, почитаю ссылки и буду еще более благодарен =)
Спасибо огромное
Спасибо за отзыв!
Спасибо за понятное объяснение!
Как всегда, огромная благодарность за видео!
Спасибо за отзыв :)
прум-прум-прум )
Спасибо, отличный урок
Спасибо
BigDecimal - зарплата тонко)
Спасибо большое за обьяснение))
Спасибо за видео очень полезно
Благодарю!
Функциональные интерфейсы (а именно возможность заменить его лябдой, как и сами лябды) появились уже в Java 8, List.of делает то же самое, что и старый Arrays.asList возвращая тот же самый иммутабельный список. Так же в Java 8 появился и method reference, который очень активно используется в примерах, но никак не обозначается и не объясняется. Но вообще интересное видео) правда сам ещё пишу на восьмой джаве, но похоже пора уже осваивать одиннадцатую)
По функциональным интерфейсам и метод референс - согласен на 100%. А вот asList() возвращает мутабельный лист, List.of() - иммутабельный. И спасибо за отзыв :)
@@EugeneSuleimanov думаю, неужели меня уже склероз хватил в мои то годы?) в общем полез в доки и напротив asList() стоит "Returns a fixed-size list backed by the specified array", понимаю что это не совсем иммутабельный лист, но на практике почти всегда он таковым и является, так что вы правы в том, что разница всё-таки есть
@@_Vertan_ тоже самое - полез в доку после того, как написал - сомнения появились.
По факту вы правы - на практике, в 99% случаев - разницы нет. Спасибо за ваше уточнение.
@@EugeneSuleimanov вам спасибо за ваш труд, смотрю ваши видео по спрингу с большим удовольствием и пользой)
Спасибо за видео.
Спасибо за отзыв!
Крутое видео, как и все остальные, очень нравится смотреть талантливых авторов, спасибо за труды)
И еще вопрос, где можно попрактиковаться по Java Stream API? Может быть есть книги, где много практических заданий или сайты, очень хочется самому порешать что-то. Буду очень благодарен Вашему фидбеку)
Спасибо за отзыв! Думаю, здесь наиболее полная информация
www.oracle.com/technical-resources/articles/java/ma14-java-se-8-streams.html
Спасибо!
Лайк.
Очень сильно напиоминает англоязычное видео Amigoscode :))
Евгений, так , уточнить бы. Вы сказали , чтобы сортировкой пузырька не пользовались, а что лучше ?) Какой алгоритм?
Крутотень
Спасибо!
топОрный! Проверочное слово "топОр", а не "тОпор".
Eugene, смогу ли я под вашим началом написать робота для торговой платформы, которая дает приказы на покупку-продажу в зависимости от новостных API данных , которые приходят с другого сервера ? Я даже не знаю к какому виду программирования это относится, не могли бы мной заняться этой темой? О себе, с математикой, физикой дружу в программировании знаний нет.
Здравствуйте! можете снять видео с объяснением аннотации в спринге и как можно написать свою)) спасибооооооо
Привет по тебе очень хорошо видно, что ты отлично знаешь java. Не можешь подсказать где ты учил этот яп:) буду очень благодарен
Евгений, пожалуйста, подскажите, как выглядел бы метод увеличения ЗП каждому сотруднику вдвое со стримами.
Подскажите как можно грамотно обработать -NullPointerException- в рамках представленных стримов?
Если я верно понял вопрос, то
.orElse
.ifPresent
.or
Спасибо за урок! Вопрос такой не должен ли .iml файл тоже быть в гитигноре?
Спасибо за видео, как всегда супер
А как вы в идеи увеличиваете шрифт?
Спасибо :)
У меня: CTRL + колесо мыши вперед/назад
Но, это в настройках нужно включить
не хватает map и flatmap
Этот видос можно переименовать : сравнение 11 и 7 версии по Stream
Спасибо за видео конечно, но причем тут 11я java? Stream API добавили не после 8й, а непосредственно в 8й вместе с лямбдами, функциональными интерфейсами, Optional и Date/Time API. В 11й если не ошибаюсь добавили только var для лямбд и что-то еще по мелочи. Вы прежде чем собеседовать людей сами то смотрели что и в какой версии появилось?
Вероятнее всего, план в текстовом файле написан не корректно и вводит в заблуждение, но, не могли бы вы скинуть тайминг где я сказал, что функционализмов появилась в 11 версии? Спасибо.
Скажите пожалуйста какие недостатки есть у стримов ?
Недостаток, растрата памяти на копирование данных, чтобы уложить их в поток
List of, если не ошибаюсь, вернёт иммутабильную коллекцию и если в дальнейшем надо в неё добавлять/удалять, то не подходит данный метод
Да, все верно. Но, в рамках данного примера, нам нужна была именно иммутабельная коллекция.
@@EugeneSuleimanov Забыл сказать спасибо за хорошо изложенный материал.
@@EugeneSuleimanov
а почему именно immutable была нужна?
@@EugeneSuleimanov
почему не рассказали про метод comparing? ведь Comparator ассоциируется с реализацией единственного абстрактного метода compare(T o1, T o2).
После 7 версии Java куда-то не туда понесло...
Как сказать, на моих проектах - нововведения катастрофически облегчают разработку. Стримы, функциональщина и т.д. А вот отступление от предыдущей модели - это есть, точно :)
Автор, удели внимание качеству изображения.. фокусировка происходит минутами.. неужели нельзя пересмотреть свое же видео перед тем как выложить.
сильно надеюсь, что мы никогда не станем коллегами.
Это бывает
убрать пурум-пурум из речи и будет нормально
не трогай пурум-пурум!
Лично я уже забыл, когда в прод деливерил код без StreamAPI =) я когда вижу не стрим код в обычной бизнес логике (не перфоменсной), принимаю его как legacy
Привет! А можно этого кода в Рэпо ? Если есть как тебя там найти ?
С удовольствием пересматриваю данное видео и возник вопрос: насколько мы теряем в скорости, когда применяем стримы? Критично ли это при работе с большими коллекциями?
Есть хорошая статья:
dzone.com/articles/java-performance-for-looping-vs-streaming
В целом, на современных JVM и оборудовании - без разницы :)
Но, в каждом конкретном случае нужно замерять самому для проверки.
@@EugeneSuleimanov Спасибо!
Спасибо за видео. Использование стримов на много увеличивает производительность программы или это больше для красоты?
Стримы медленнее, но вы этого, скорее всего, даже не заметите.
Комментарий для развития канала)
Спасибо вам!
Начал переписывать в IDEA Ваш код и наткнулся на кучу красных подчеркиваний (SDK 11 использую, а вот project language level также 11). Может нужен другой project level?. Спасибо за ценные знания.
нашел еще 2 класа Specialist и Specialty и все встало на свои места
Здорово! Мне понравилось изложение материала. Я сейчас как раз изучаю Java и не так давно проходил Streamы, и в вашем видео было всё понятно, за одно повторил их немного.
Спасибо за отзыв :)
Время 14:56. Строка 48: matchAnyEnginner -> matchAnyEngineer
Спасибо за подсказку. Пропустил опечатку.
@@EugeneSuleimanov Даже не надеялся, что вы прочтете мой комментарий на столь давнем видео =)
Очень помогают ваши видео, спасибо!
@@Стрижков спасибо за отзыв
Спасибо большое. Очень нужное видео. Все понятно и по делу.
Спасибо за отзыв!
Супер, все очень доходчиво 👍
Спасибо за отзыв!
что за дичь? в java 8 уже был Arrays.asList, функциональные интерфейсы появились не после java 8, а в ней же они и появились! кстати для перечислений лучше использовать равенство. Удивительный человек сам не знает что нового где добавили но собеседует и критикует других людей
Да, вы правы, изменение в компараторе было в java 8. Не хотел и показаться бестактным и
критиковать. Но, List.of точно появилось после 8 версии :)
По поводу сравнения енамов - здесь холивар идет давно и я, конечно же, изучал аргументы Блоха по этому поводу. Поэтому говорить, что лучше, а что нет - крайне спорный вопрос и однозначного ответа на этот вопрос нет. Все крайне зависит от ситуации. В любом случае спасибо, всегда рад конструктивной критике, в реальной жизни этого часто не хватает. Хотя, я бы не был столь резким в высказываниях.