Основы работы со Stream API в Java

  Рет қаралды 48,665

Eugene Suleimanov

Eugene Suleimanov

4 жыл бұрын

В данном видео я попытался рассказать о базовых (исключительно практических) возможностях Stream API в языке Java.
Ссылки
Репозиторий с кодом из видео:
github.com/proselytear/stream...
Книга по Java 11:
www.amazon.com/Java-Complete-...
Functional programming:
blogs.oracle.com/developers/t...
Stream API:
www.oracle.com/technical-reso...
Нововведения Java 11:
www.oracle.com/technetwork/ja...

Пікірлер: 124
@user-ww9tp1em4l
@user-ww9tp1em4l 3 жыл бұрын
Посмотрев видео про стримы в начале изучения джавы, это видео казалось запутнным и сложным. Спустя 8 месяцев изучения джавы и поработав и написав пет проект с использованием спринга , и занявшесь уплотнением знаний стримов и т.д., наткнулся на видео снова , насколько же просто смотреть и все понимать )
@eugenenovikov671
@eugenenovikov671 3 жыл бұрын
мне после javascript и без явы всё понятно, в яваскрипте это по дефолту
@M.Makart
@M.Makart 2 жыл бұрын
Впервые до Java узнал о функциональном подходе в Python (цепочки методов map, reduce, filter, ...). Python - хороший язык для понимания функционального подхода в первый раз.
@m.m.576
@m.m.576 Жыл бұрын
++++
@dark_evil77
@dark_evil77 4 жыл бұрын
Этот мужик заслуживает больше лайков и подписчиков!
@user-bv7te6zv8b
@user-bv7te6zv8b 2 жыл бұрын
Очень доступное объяснение, без воды и многословия.
@wildjoe6259
@wildjoe6259 4 жыл бұрын
Как всегда, огромная благодарность за видео!
@EugeneSuleimanov
@EugeneSuleimanov 4 жыл бұрын
Спасибо за отзыв :)
@natalyasucher3770
@natalyasucher3770 4 жыл бұрын
Как здорово ты объясняешь, Евгений!!! Продолжай, пожалуйста!
@EugeneSuleimanov
@EugeneSuleimanov 4 жыл бұрын
Спасибо за отзыв, Наталья!
@dimasamsonau3646
@dimasamsonau3646 2 жыл бұрын
Блин, Женька как всегда красавчик) вот стримы - вот так вот с ними работать надо. Все понятно и без воды! спасибо
@EugeneSuleimanov
@EugeneSuleimanov 2 жыл бұрын
Спасибо за отзыв:)
@RG-em1nh
@RG-em1nh 3 жыл бұрын
Супер продуктивно Евгений ! Спасибо !
@user-ff8cr5cs3q
@user-ff8cr5cs3q 3 жыл бұрын
Готовлюсь к собеседованию. Огромная благодарность за такой понятный урок!!!
@user-bu4ke5su7m
@user-bu4ke5su7m 3 жыл бұрын
Спасибо за видео, очень доступно объясняете. Понятные примеры со сравнением аналогичной логики программы с использованием старых методик(for, if..). Побольше бы таких видео..
@EugeneSuleimanov
@EugeneSuleimanov 3 жыл бұрын
Спасибо за отзыв!
@user-sk8vp8lm9x
@user-sk8vp8lm9x 3 жыл бұрын
Комментарий для развития канала) Спасибо вам!
@TheSelectmax
@TheSelectmax 3 жыл бұрын
Спасибо, очень полезное практическое видео! Надеюсь, почитаю ссылки и буду еще более благодарен =)
@davionsoft5762
@davionsoft5762 2 жыл бұрын
3:35 Стоит упомянуть, что при List.of и тп -> создается Unmodifiable (Immutable) коллекция Т.е с ним нельзя проводить операции replace/add/remove
@bolatashirbek
@bolatashirbek 3 жыл бұрын
Спасибо за хорошее видео. Было бы хорошо если вы продолжили снимать на примерах про нововведения Java 8, такие как: Лямбда, Optional, Функциональные интерфейсы
@user-qw1wh4dl2m
@user-qw1wh4dl2m 3 жыл бұрын
Как всегда топ контент. Спасибо.
@saimon4947
@saimon4947 3 жыл бұрын
Спасибо за понятное объяснение!
@Devivl
@Devivl Жыл бұрын
Большое спасибо, Евгений. Очень хорошее понятное видео. Продолжайте, пожалуйста.
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв!
@anjelomanoranjan3908
@anjelomanoranjan3908 6 ай бұрын
Одно удовольствие смотреть твои обучающие видео.
@EugeneSuleimanov
@EugeneSuleimanov 6 ай бұрын
Спасибо за отзыв!
@denys_kovpaka
@denys_kovpaka 4 жыл бұрын
Отличное видео на примерах. Спасибо за материал. P.S. Будет здорово увидеть похожее видео по новым фичам из Java 11)))
@EugeneSuleimanov
@EugeneSuleimanov 4 жыл бұрын
Спасибо за отзыв. Есть наработки по этой теме, но, не знаю, когда смогу выложить видео
@slevinkelebra3738
@slevinkelebra3738 4 жыл бұрын
Здорово! Мне понравилось изложение материала. Я сейчас как раз изучаю Java и не так давно проходил Streamы, и в вашем видео было всё понятно, за одно повторил их немного.
@EugeneSuleimanov
@EugeneSuleimanov 4 жыл бұрын
Спасибо за отзыв :)
@javastream9414
@javastream9414 3 жыл бұрын
Евгений, спасибо, крутой обзор
@elenazelenaya6783
@elenazelenaya6783 4 жыл бұрын
Спасибо большое за обьяснение))
@haroldfinch7492
@haroldfinch7492 3 жыл бұрын
Спасибо, отличный урок
@user-sz9kn8er8i
@user-sz9kn8er8i Жыл бұрын
Красавчик! Дай бог тебе здоровье и много много хорошего! Спасибо за твои видосы.
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо :)
@dondigidon1633
@dondigidon1633 2 жыл бұрын
Спасибо за труды! Ты молодец! 👍👍👍
@EugeneSuleimanov
@EugeneSuleimanov 2 жыл бұрын
Спасибо за отзыв :)
@abuyasin2931
@abuyasin2931 2 жыл бұрын
Ничего нового - Евгений как всегда всё разложил ну просто гениально.
@user-wz7cv4dt6q
@user-wz7cv4dt6q 2 жыл бұрын
комментарий для развития Вашего канала, спасибо за ценную информацию, успехов!
@EugeneSuleimanov
@EugeneSuleimanov 2 жыл бұрын
Спасибо!
@Alexander-is1eq
@Alexander-is1eq 3 жыл бұрын
Спасибо большое. Очень нужное видео. Все понятно и по делу.
@EugeneSuleimanov
@EugeneSuleimanov 3 жыл бұрын
Спасибо за отзыв!
@Noname2685
@Noname2685 2 жыл бұрын
Определенно лучшее видео!
@user-ug2es7lr8t
@user-ug2es7lr8t Жыл бұрын
Сегодня это видео мне очень помогло, не знаю, чтобы я без него делал. Спасибо!
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв! Рад, что материал оказался полезен.
@Mr.J248
@Mr.J248 3 жыл бұрын
Спасибо за видео очень полезно
@svetlanamazhaykina6918
@svetlanamazhaykina6918 4 ай бұрын
Спасибо за Ваш труд! Коммент в поддержку канала.
@EugeneSuleimanov
@EugeneSuleimanov 4 ай бұрын
Спасибо за поддержку!
@pushkar8736
@pushkar8736 4 жыл бұрын
Благодарю!
@niener4176
@niener4176 Жыл бұрын
Спасибо, всё упорядочено, сгруппировано и, как следствие, просто.
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв!
@phil2964
@phil2964 4 жыл бұрын
Супер, все очень доходчиво 👍
@EugeneSuleimanov
@EugeneSuleimanov 4 жыл бұрын
Спасибо за отзыв!
@user-iu6yz6ck6h
@user-iu6yz6ck6h 4 жыл бұрын
Спасибо за видео.
@EugeneSuleimanov
@EugeneSuleimanov 4 жыл бұрын
Спасибо за отзыв!
@sultankodirov3038
@sultankodirov3038 2 жыл бұрын
Respect! очень здорово объясняешь/ я как 20 дней изучаю сам Stream не смог сделать общую понятию про это/ спасибо тебе !!!! других новый материалов тоже объяснил бы так как сравнив со старой версий//// спасибо тебе !
@EugeneSuleimanov
@EugeneSuleimanov 2 жыл бұрын
Спасибо за отзыв, рад, что материал оказался полезен :)
@FilmicFil
@FilmicFil 3 жыл бұрын
Спасибо!
@ps1795
@ps1795 3 жыл бұрын
пурум пурум))!
@user-ob3yk8be5c
@user-ob3yk8be5c 2 жыл бұрын
Спасибо огромное
@EugeneSuleimanov
@EugeneSuleimanov 2 жыл бұрын
Спасибо за отзыв!
@SvetlanaCapri
@SvetlanaCapri Жыл бұрын
Спасибо
@ayrat11
@ayrat11 4 жыл бұрын
Спасибо за урок! Вопрос такой не должен ли .iml файл тоже быть в гитигноре?
@user-hi2bs1me7o
@user-hi2bs1me7o 3 жыл бұрын
Крутотень
@user-es6eb7cb2x
@user-es6eb7cb2x 3 жыл бұрын
Группировку старым способом я бы сделал по другому - не сначала запихал все специальности в мапу, а при обходе коллекции проверял на наличие ключа, если такой ключ есть, то добавляем сотрудника в лист значений, если нет, то создаем новый Entry. Да и цикл в старых способах нужно использовать foreach который - кода было бы гораздо меньше
@krab9512
@krab9512 4 жыл бұрын
Крутое видео, как и все остальные, очень нравится смотреть талантливых авторов, спасибо за труды) И еще вопрос, где можно попрактиковаться по Java Stream API? Может быть есть книги, где много практических заданий или сайты, очень хочется самому порешать что-то. Буду очень благодарен Вашему фидбеку)
@EugeneSuleimanov
@EugeneSuleimanov 4 жыл бұрын
Спасибо за отзыв! Думаю, здесь наиболее полная информация www.oracle.com/technical-resources/articles/java/ma14-java-se-8-streams.html
@krab9512
@krab9512 4 жыл бұрын
Спасибо!
@friedbearsburninhell2022
@friedbearsburninhell2022 4 жыл бұрын
Лично я уже забыл, когда в прод деливерил код без StreamAPI =) я когда вижу не стрим код в обычной бизнес логике (не перфоменсной), принимаю его как legacy
@user-bd6bt8xl2b
@user-bd6bt8xl2b 2 жыл бұрын
Привет по тебе очень хорошо видно, что ты отлично знаешь java. Не можешь подсказать где ты учил этот яп:) буду очень благодарен
@user-cy6lt2fu4w
@user-cy6lt2fu4w 3 жыл бұрын
прум-прум-прум )
@user-pv1zw2oe5k
@user-pv1zw2oe5k 2 жыл бұрын
Лайк.
@user-hq6nm2tf6j
@user-hq6nm2tf6j 4 жыл бұрын
Спасибо за видео, как всегда супер А как вы в идеи увеличиваете шрифт?
@EugeneSuleimanov
@EugeneSuleimanov 4 жыл бұрын
Спасибо :) У меня: CTRL + колесо мыши вперед/назад Но, это в настройках нужно включить
@kaibrakhmanyelubay2671
@kaibrakhmanyelubay2671 2 жыл бұрын
Здравствуйте! можете снять видео с объяснением аннотации в спринге и как можно написать свою)) спасибооооооо
@ivanyuyukin1947
@ivanyuyukin1947 4 жыл бұрын
Спасибо за видео. Использование стримов на много увеличивает производительность программы или это больше для красоты?
@denysbondarenko2417
@denysbondarenko2417 4 жыл бұрын
Стримы медленнее, но вы этого, скорее всего, даже не заметите.
@abuyasin2931
@abuyasin2931 2 жыл бұрын
Евгений, пожалуйста, подскажите, как выглядел бы метод увеличения ЗП каждому сотруднику вдвое со стримами.
@_Vertan_
@_Vertan_ 3 жыл бұрын
Функциональные интерфейсы (а именно возможность заменить его лябдой, как и сами лябды) появились уже в Java 8, List.of делает то же самое, что и старый Arrays.asList возвращая тот же самый иммутабельный список. Так же в Java 8 появился и method reference, который очень активно используется в примерах, но никак не обозначается и не объясняется. Но вообще интересное видео) правда сам ещё пишу на восьмой джаве, но похоже пора уже осваивать одиннадцатую)
@EugeneSuleimanov
@EugeneSuleimanov 3 жыл бұрын
По функциональным интерфейсам и метод референс - согласен на 100%. А вот asList() возвращает мутабельный лист, List.of() - иммутабельный. И спасибо за отзыв :)
@_Vertan_
@_Vertan_ 3 жыл бұрын
@@EugeneSuleimanov думаю, неужели меня уже склероз хватил в мои то годы?) в общем полез в доки и напротив asList() стоит "Returns a fixed-size list backed by the specified array", понимаю что это не совсем иммутабельный лист, но на практике почти всегда он таковым и является, так что вы правы в том, что разница всё-таки есть
@EugeneSuleimanov
@EugeneSuleimanov 3 жыл бұрын
@@_Vertan_ тоже самое - полез в доку после того, как написал - сомнения появились. По факту вы правы - на практике, в 99% случаев - разницы нет. Спасибо за ваше уточнение.
@_Vertan_
@_Vertan_ 3 жыл бұрын
@@EugeneSuleimanov вам спасибо за ваш труд, смотрю ваши видео по спрингу с большим удовольствием и пользой)
@danielvai5117
@danielvai5117 2 жыл бұрын
Евгений, так , уточнить бы. Вы сказали , чтобы сортировкой пузырька не пользовались, а что лучше ?) Какой алгоритм?
@faniskhalikov9736
@faniskhalikov9736 2 жыл бұрын
С удовольствием пересматриваю данное видео и возник вопрос: насколько мы теряем в скорости, когда применяем стримы? Критично ли это при работе с большими коллекциями?
@EugeneSuleimanov
@EugeneSuleimanov 2 жыл бұрын
Есть хорошая статья: dzone.com/articles/java-performance-for-looping-vs-streaming В целом, на современных JVM и оборудовании - без разницы :) Но, в каждом конкретном случае нужно замерять самому для проверки.
@faniskhalikov9736
@faniskhalikov9736 2 жыл бұрын
@@EugeneSuleimanov Спасибо!
@Mr.J248
@Mr.J248 3 жыл бұрын
Начал переписывать в IDEA Ваш код и наткнулся на кучу красных подчеркиваний (SDK 11 использую, а вот project language level также 11). Может нужен другой project level?. Спасибо за ценные знания.
@Mr.J248
@Mr.J248 3 жыл бұрын
нашел еще 2 класа Specialist и Specialty и все встало на свои места
@Gitarist1111111
@Gitarist1111111 2 жыл бұрын
Eugene, смогу ли я под вашим началом написать робота для торговой платформы, которая дает приказы на покупку-продажу в зависимости от новостных API данных , которые приходят с другого сервера ? Я даже не знаю к какому виду программирования это относится, не могли бы мной заняться этой темой? О себе, с математикой, физикой дружу в программировании знаний нет.
@Sultan-ym6lo
@Sultan-ym6lo 2 жыл бұрын
Привет! А можно этого кода в Рэпо ? Если есть как тебя там найти ?
@m.m.576
@m.m.576 Жыл бұрын
Подскажите как можно грамотно обработать -NullPointerException- в рамках представленных стримов?
@EugeneSuleimanov
@EugeneSuleimanov Жыл бұрын
Если я верно понял вопрос, то .orElse .ifPresent .or
@vass8180
@vass8180 2 жыл бұрын
BigDecimal - зарплата тонко)
@vladimirkrylov4947
@vladimirkrylov4947 4 жыл бұрын
List of, если не ошибаюсь, вернёт иммутабильную коллекцию и если в дальнейшем надо в неё добавлять/удалять, то не подходит данный метод
@EugeneSuleimanov
@EugeneSuleimanov 4 жыл бұрын
Да, все верно. Но, в рамках данного примера, нам нужна была именно иммутабельная коллекция.
@vladimirkrylov4947
@vladimirkrylov4947 4 жыл бұрын
@@EugeneSuleimanov Забыл сказать спасибо за хорошо изложенный материал.
@manOfPlanetEarth
@manOfPlanetEarth 3 жыл бұрын
@@EugeneSuleimanov а почему именно immutable была нужна?
@manOfPlanetEarth
@manOfPlanetEarth 3 жыл бұрын
@@EugeneSuleimanov почему не рассказали про метод comparing? ведь Comparator ассоциируется с реализацией единственного абстрактного метода compare(T o1, T o2).
@MrRomanvideo
@MrRomanvideo 2 жыл бұрын
Очень сильно напиоминает англоязычное видео Amigoscode :))
@user-vr9cn6xz7w
@user-vr9cn6xz7w 3 жыл бұрын
Время 14:56. Строка 48: matchAnyEnginner -> matchAnyEngineer
@EugeneSuleimanov
@EugeneSuleimanov 3 жыл бұрын
Спасибо за подсказку. Пропустил опечатку.
@user-vr9cn6xz7w
@user-vr9cn6xz7w 3 жыл бұрын
@@EugeneSuleimanov Даже не надеялся, что вы прочтете мой комментарий на столь давнем видео =) Очень помогают ваши видео, спасибо!
@EugeneSuleimanov
@EugeneSuleimanov 3 жыл бұрын
@@user-vr9cn6xz7w спасибо за отзыв
@karenkhalatyan137
@karenkhalatyan137 3 жыл бұрын
Скажите пожалуйста какие недостатки есть у стримов ?
@user-ur7bn1kd1p
@user-ur7bn1kd1p 3 ай бұрын
Недостаток, растрата памяти на копирование данных, чтобы уложить их в поток
@caffeinejavacode1475
@caffeinejavacode1475 3 жыл бұрын
не хватает map и flatmap
@ricciottoinnebbia1333
@ricciottoinnebbia1333 2 жыл бұрын
топОрный! Проверочное слово "топОр", а не "тОпор".
@adrtalladi2404
@adrtalladi2404 3 жыл бұрын
Этот видос можно переименовать : сравнение 11 и 7 версии по Stream
@alexanderlojhkin8997
@alexanderlojhkin8997 3 жыл бұрын
Спасибо за видео конечно, но причем тут 11я java? Stream API добавили не после 8й, а непосредственно в 8й вместе с лямбдами, функциональными интерфейсами, Optional и Date/Time API. В 11й если не ошибаюсь добавили только var для лямбд и что-то еще по мелочи. Вы прежде чем собеседовать людей сами то смотрели что и в какой версии появилось?
@EugeneSuleimanov
@EugeneSuleimanov 3 жыл бұрын
Вероятнее всего, план в текстовом файле написан не корректно и вводит в заблуждение, но, не могли бы вы скинуть тайминг где я сказал, что функционализмов появилась в 11 версии? Спасибо.
@SA-HOME
@SA-HOME 4 жыл бұрын
После 7 версии Java куда-то не туда понесло...
@EugeneSuleimanov
@EugeneSuleimanov 4 жыл бұрын
Как сказать, на моих проектах - нововведения катастрофически облегчают разработку. Стримы, функциональщина и т.д. А вот отступление от предыдущей модели - это есть, точно :)
@user-pt2lq1ik7i
@user-pt2lq1ik7i 3 жыл бұрын
Автор, удели внимание качеству изображения.. фокусировка происходит минутами.. неужели нельзя пересмотреть свое же видео перед тем как выложить.
@guugle
@guugle 2 жыл бұрын
сильно надеюсь, что мы никогда не станем коллегами.
@EugeneSuleimanov
@EugeneSuleimanov 2 жыл бұрын
Это бывает
@Taluksya
@Taluksya 4 жыл бұрын
что за дичь? в java 8 уже был Arrays.asList, функциональные интерфейсы появились не после java 8, а в ней же они и появились! кстати для перечислений лучше использовать равенство. Удивительный человек сам не знает что нового где добавили но собеседует и критикует других людей
@EugeneSuleimanov
@EugeneSuleimanov 4 жыл бұрын
Да, вы правы, изменение в компараторе было в java 8. Не хотел и показаться бестактным и критиковать. Но, List.of точно появилось после 8 версии :)
@EugeneSuleimanov
@EugeneSuleimanov 4 жыл бұрын
По поводу сравнения енамов - здесь холивар идет давно и я, конечно же, изучал аргументы Блоха по этому поводу. Поэтому говорить, что лучше, а что нет - крайне спорный вопрос и однозначного ответа на этот вопрос нет. Все крайне зависит от ситуации. В любом случае спасибо, всегда рад конструктивной критике, в реальной жизни этого часто не хватает. Хотя, я бы не был столь резким в высказываниях.
@alexander_brun
@alexander_brun 2 жыл бұрын
убрать пурум-пурум из речи и будет нормально
@dimasamsonau3646
@dimasamsonau3646 2 жыл бұрын
не трогай пурум-пурум!
Сергей Куксенко - Stream API, часть 1
1:13:18
JPoint, Joker и JUG ru
Рет қаралды 81 М.
The World's Fastest Cleaners
00:35
MrBeast
Рет қаралды 119 МЛН
Суд над Бишимбаевым. 2 мая | ОНЛАЙН
7:14:30
AKIpress news
Рет қаралды 685 М.
Как работает HTTPS?
11:01
Eugene Suleimanov
Рет қаралды 38 М.
Основы работы c Docker
35:59
Eugene Suleimanov
Рет қаралды 16 М.
Будущее программирования
28:16
Eugene Suleimanov
Рет қаралды 8 М.
The World's Fastest Cleaners
00:35
MrBeast
Рет қаралды 119 МЛН