Java Stream API: функционально, модно, молодёжно!

  Рет қаралды 68,796

letsCode

letsCode

5 жыл бұрын

Java Stream API: функциональный подход к работе с коллекциями в Java 8+. Продвинутые методы работы с коллекциями.
Содержание ниже
Казалось бы, чего такого можно придумать в обработке коллеций: взяли и обошли в цикле, но нет. Если мы взглянем в те же популярные JavaScript, ruby, python или более близкие JVM языки, то увидим, что можно жить проще, писать меньше кода и получать более читабельные обработчики. Инженеры из Oracle напрягли мозги и осчастливили миллионы разработчиков во всём мире. Присоединимся же и мы к всеобщей радости, кратко ознакомившись с этим замечательным API.
Код из видео:
github.com/drucoder/javalearn...
Хорошая статья по теме (спасибо Чеширу, что нашёл и поделился в чатике):
annimon.com/article/2778
Видео про Lombok:
• Java Tools: Project Lo...
СОДЕРЖАНИЕ
• Java Stream API: функц... Стримы из объектов файловой системы
• Java Stream API: функц... Files.lines()
• Java Stream API: функц... Files.list()
• Java Stream API: функц... Files.walk()
• Java Stream API: функц... Стримы из примитивов
• Java Stream API: функц... IntStream
• Java Stream API: функц... DoubleStream
• Java Stream API: функц... IntStream.range()
• Java Stream API: функц... IntStream.rangeClosed()
• Java Stream API: функц... Arrays.stream()
Стримы из объектов
• Java Stream API: функц... Stream.of(Object)
• Java Stream API: функц... Stream.builder()
• Java Stream API: функц... Collection.stream()
• Java Stream API: функц... Collection.parallelStream()
• Java Stream API: функц... Stream.generate()
• Java Stream API: функц... Stream.iterate()
• Java Stream API: функц... Stream.concat()
Терминальные операции
• Java Stream API: функц... Stream.count()
• Java Stream API: функц... Stream.forEach()
• Java Stream API: функц... Collection.forEach()
• Java Stream API: функц... Stream.forEachOrdered()
• Java Stream API: функц... Stream.collect()
• Java Stream API: функц... Stream.toArray()
• Java Stream API: функц... Stream.collect(toMap())
• Java Stream API: функц... IntStream.reduce()
• Java Stream API: функц... Stream.reduce()
• Java Stream API: функц... IntStream.average(), IntStream.max(), IntStream.min(), IntStream.sum(), IntStream.summaryStatictics()
• Java Stream API: функц... Stream.max(), Stream.min()
• Java Stream API: функц... Stream.findAny(), Stream.findFirst()
• Java Stream API: функц... Stream.noneMatch()
• Java Stream API: функц... Stream.anyMatch()
• Java Stream API: функц... Stream.allMatch()
• Java Stream API: функц... Трансформации стримов
• Java Stream API: функц... IntStream.mapToLong()
• Java Stream API: функц... IntStream.mapToObj()
• Java Stream API: функц... IntStream.distinct()
• Java Stream API: функц... Stream.filter()
• Java Stream API: функц... Stream.skip()
• Java Stream API: функц... Stream.limit()
• Java Stream API: функц... Stream.sorted()
• Java Stream API: функц... Stream.map()
• Java Stream API: функц... Stream.peek()
• Java Stream API: функц... Stream.takeWhile()
• Java Stream API: функц... Stream.dropWhile()
• Java Stream API: функц... Stream.flatMap()
• Java Stream API: функц... Примеры использования
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Твиттер: / letscodedru
➡ Группа Вконтакте: letscodedru
➡ Канал в Telegram: t.me/letsCode_dru
➡ Чат в Telegram: t.me/joinchat/FeiP9xEhqHajfqh...
➡ Сервер в Discord: / discord
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
Поддержать проект:
➡ Patreon / letscodedru
➡ Яндекс.Деньги money.yandex.ru/to/4100145167...
➡ PayPal paypal.me/letscodedru
➡ Qiwi qiwi.me/letscode
➡ WebMoney/BitCoin funding.webmoney.ru/d/drucoder
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Ссылка на канал: www.youtube.comwww.yo...
➡ Ссылка на Яндекс.Дзен: zen.yandex.ru/media/id/5ac209...

Пікірлер: 103
@letsCodeDru
@letsCodeDru 5 жыл бұрын
СОДЕРЖАНИЕ 0:52 Стримы из объектов файловой системы 0:55 Files.lines() 1:11 Files.list() 1:20 Files.walk() 1:50 Стримы из примитивов 2:02 IntStream 2:12 DoubleStream 2:23 IntStream.range() 2:42 IntStream.rangeClosed() 2:54 Arrays.stream() Стримы из объектов 3:11 Stream.of(Object) 3:35 Stream.builder() 3:54 Collection.stream() 4:15 Collection.parallelStream() 4:45 Stream.generate() 5:37 Stream.iterate() 6:26 Stream.concat() Терминальные операции 7:15 Stream.count() 7:20 Stream.forEach() 7:52 Collection.forEach() 8:04 Stream.forEachOrdered() 8:27 Stream.collect() 8:51 Stream.toArray() 8:56 Stream.collect(toMap()) 9:40 IntStream.reduce() 10:06 Stream.reduce() 12:21 IntStream.average(), IntStream.max(), IntStream.min(), IntStream.sum(), IntStream.summaryStatictics() 12:44 Stream.max(), Stream.min() 13:09 Stream.findAny(), Stream.findFirst() 13:35 Stream.noneMatch() 14:02 Stream.anyMatch() 14:13 Stream.allMatch() 15:01 Трансформации стримов 15:08 IntStream.mapToLong() 15:19 IntStream.mapToObj() 15:52 IntStream.distinct() 16:08 Stream.filter() 16:29 Stream.skip() 16:34 Stream.limit() 17:26 Stream.sorted() 17:45 Stream.map() 18:01 Stream.peek() 18:46 Stream.takeWhile() 19:25 Stream.dropWhile() 21:20 Stream.flatMap() 23:49 Примеры использования
@Tiertey
@Tiertey 3 жыл бұрын
добавь в описание 0:00 Старт и тайм-коды попадут на ленту видео
@victormog
@victormog 5 жыл бұрын
*Отличное наглядное пособие по Stream!* Для полноты картины только, можно было бы в начале сказать, что такое Stream...
@letsCodeDru
@letsCodeDru 5 жыл бұрын
Внезапно не подумал, что кто-то не знает. Зашоренность. :)
@victormog
@victormog 5 жыл бұрын
@@letsCodeDru Не знает - ладно. Я до сих пор stream ассоциирую с С-шными потоками...
@kunnilinux
@kunnilinux 5 жыл бұрын
@@letsCodeDru плюсую, может, в видео про лямбды пройдетесь по определениям стримов и лямбд одним махом?
@user-pw9ln6mr7c
@user-pw9ln6mr7c 5 жыл бұрын
Очень полезное видео, спасибо!
@dmitrymukhin9458
@dmitrymukhin9458 5 жыл бұрын
Спасибо большое!! Даешь очень просто приложения по Spring Cloud!! =))
@user-sd4bw9gh1l
@user-sd4bw9gh1l 2 жыл бұрын
Лучшее видео по стрим апи, которое я видел. Было бы классно углубится в эту тему и ещё рассказать про функциональные интерфейсы. Часто спрашивают на собеседованиях именно о них)
@anjelomanoranjan3908
@anjelomanoranjan3908 6 ай бұрын
видео изумительно) спасибо! Жду новых видео по Java
@torpid0
@torpid0 2 жыл бұрын
Чрезвычайно содержательное видео! Все подробно и без ошибок, эканий и бэканий. За таймкоды в описании отдельное спасибо!
@nsandrus
@nsandrus 4 жыл бұрын
Отличная демонстрация Stream API, с удовольствием посмотрел бы еще по Optional
@mr_robot_20_04
@mr_robot_20_04 5 жыл бұрын
Годные и информативные видосы, спасибо за контент! Было бы здорово увидеть туториал по Spring security в вашем исполнении) Желательно более углубленно и информативно нежели уже есть на канале
@kunnilinux
@kunnilinux 5 жыл бұрын
Большое спасибо за видео!!! Даже не знаю, как еще выразить благодарность. Дело в том, что я джун в компании, устроился совсем недавно, и темы ваших роликов как раз совпадают с изучаемыми мной темами.
@faniskhalikov9736
@faniskhalikov9736 Жыл бұрын
Круть! Концентрация полезности зашкаливает )) При этом доступность и изложение инфы на высоте
@D.P._
@D.P._ 4 жыл бұрын
Как-то пропустил) Крутой видос, и реально полезный! Исправляюсь: Like as usual!
@user-rg1jw3xq7b
@user-rg1jw3xq7b 5 жыл бұрын
одна из самых актуальных тем, спасибо!
@irinash4314
@irinash4314 Жыл бұрын
Спасибо, очень полезное видео, большой охват информации о применении стримов. 👍
@Kepchyk1101
@Kepchyk1101 7 ай бұрын
Очень позновательно, быстро и без воды. Не как вот эти: а сегодня мы бе ме ге, аааа, еее. 👍🏻
@romanmotovilov129
@romanmotovilov129 4 жыл бұрын
Спасибо. Отличный урок!
@user-arbuzer1133
@user-arbuzer1133 3 жыл бұрын
Спасибо БОЛЬШОЕ за видео! Пока что не понятно как работает эта тёмная магия)) Нужно ещё погонять этот ролик speed 0,1))
@Qwertyuiopasdfghjklzxcvbnm4
@Qwertyuiopasdfghjklzxcvbnm4 3 жыл бұрын
Очень качественное, информативное объяснение!
@eugenekotsaba6512
@eugenekotsaba6512 4 жыл бұрын
это самое содержательное видео на ютубе , лайк)
@user-pi3mv8vq6e
@user-pi3mv8vq6e 4 жыл бұрын
Сначала было тяжело понимать, потом скорость 0,75 поставил и класс. Осталось заставить себя перейти с циклов на стримы, чтобы практикой это все закрепить
@pvtitov
@pvtitov 3 жыл бұрын
codewars например хорошо помогает
@pvtitov
@pvtitov 3 жыл бұрын
спасибо за идею про скорость! реально нормально стало! автор на спидах)))
@user-fj3rr9mi4x
@user-fj3rr9mi4x 2 жыл бұрын
Я как изучил стримы тоже везде их лепил, а оказывается, как отметил автор, только в больших коллекциях получается выигрыш в производительности.
@4glazy
@4glazy Жыл бұрын
@@user-fj3rr9mi4x речь шла о parallel stream.
@user-zy1km1px6d
@user-zy1km1px6d 3 жыл бұрын
Просто здорово. Спасибо за труд.
@tomozi1
@tomozi1 5 жыл бұрын
Спасибо за превосходные видео!
@ZhivaPR
@ZhivaPR 5 жыл бұрын
Хорошая подача, спасибо.
@vp9878
@vp9878 3 жыл бұрын
Спасибо за урок!
@user-cv1xd9vb4f
@user-cv1xd9vb4f 5 жыл бұрын
Прикольная штука. Недавно узнал об akka-streams, по документации можно более наглядно посмотреть и понять для чего они вообще нужны. +back pressure
@iryna6389
@iryna6389 5 жыл бұрын
Привет, огромное спасибо за видео.
@ievgengrozenok1803
@ievgengrozenok1803 5 жыл бұрын
Спасибо! Все было понятно
@dmitriy5248
@dmitriy5248 3 жыл бұрын
Шикарное видео! Спасибо
@pavelminsk
@pavelminsk 2 жыл бұрын
Очень круто! Спасибо!
@Sergey111111
@Sergey111111 5 жыл бұрын
Очень круто, кратко и емко!
@eastwood8628
@eastwood8628 4 жыл бұрын
и четко)
@way2play980
@way2play980 2 ай бұрын
Спасибо, очень интересно!
@user-ce3lm7sz1k
@user-ce3lm7sz1k 4 жыл бұрын
супер! мне (как тупому) ничего не понятно, но кажется что объяснение хорошее!)
@letsCodeDru
@letsCodeDru 4 жыл бұрын
Это норма. Я учебные видосы и статьи тоже по несколько раз пересматриваю/перечитываю
@russia_winner
@russia_winner 3 жыл бұрын
@@letsCodeDru дорогу осилит идущий
@user-eg2fx6si6i
@user-eg2fx6si6i 5 жыл бұрын
Спасибо)
@taraskutselya1326
@taraskutselya1326 5 жыл бұрын
То что надо! Лайк, подписка, колокольчик (вру... давно подписан 😀)
@Peter-jp9zw
@Peter-jp9zw 5 жыл бұрын
ты классный, спасибо тебе)
@andrewaliokhin8306
@andrewaliokhin8306 2 жыл бұрын
Оче6нь информативною. Спасибо
@romantsyupryk3009
@romantsyupryk3009 5 жыл бұрын
Thank you so much.
@withotsoul7252
@withotsoul7252 2 жыл бұрын
хороший урок!
@levvv1000
@levvv1000 4 жыл бұрын
Видео хорошее, только ваш обход списка работает, если самая корневая нода (у которой нет родителя) находится под первым индексом в списке, иначе она будет будет рекурсивно передаваться как аргумент чайлд департамента и дерево не сможет создаться, так как у нескольких департаментов не будет родителей
@shinshin7253
@shinshin7253 Жыл бұрын
Годно! Спасибо
@moovestone
@moovestone Ай бұрын
спасибо. только это походу для тех, кто уже работает разработчиком, а не изучает)
@K4sik
@K4sik 5 жыл бұрын
Видео очень полезное, но будут уроки по Spring Boot с использованием JavaScript и framework Ajax, JQuery ......?
@mirnijalexey2765
@mirnijalexey2765 3 жыл бұрын
2:12 у меня комбинация Ctrl+Alt+Shift почему то не работает на Винде, может какая то другая комбинация по умолчанию?
@mercurial-flower
@mercurial-flower 2 жыл бұрын
Класс!
@margulankurmangaly9150
@margulankurmangaly9150 5 жыл бұрын
По твоим видосам устроился на работу)))))))) Спасибо за годноту
@letsCodeDru
@letsCodeDru 5 жыл бұрын
Рад, что имею к этому отношение. Проставляйся с первой ЗП, реквизиты под каждым видео 😅
@shtan5583
@shtan5583 5 жыл бұрын
Стримы топ, но пользоваться ими без документации я почему-то не могу. Куча похожих методов и подводных камней.
@gorsky6382
@gorsky6382 3 жыл бұрын
Вы конечно извините, но это лайк и подписка..
@alexandergrankin8829
@alexandergrankin8829 3 жыл бұрын
Пушка!
@artyomgrigorev2186
@artyomgrigorev2186 Жыл бұрын
Например, моднейшее написание стримов, например 😃
@sander02rubenkov62
@sander02rubenkov62 4 жыл бұрын
2:15 Ребят, обертки только для double,long,int - и все! Никаких "boolean и так далее" - нет.
@pvtitov
@pvtitov 3 жыл бұрын
боже чтоже так быстро то у меня сейчас голова взорвется, можно тоже самое но 10 видео продолжительностью как это? XD
@koKS.1k
@koKS.1k 3 жыл бұрын
Скорость воспроизведения х0,75 и всё четко (=
@kunnilinux
@kunnilinux 5 жыл бұрын
Что можете сказать по поводу производительности стримов в сравнении со старыми подходами? Например, что быстрее, конвертировать коллекцию доменов в коллекцию ДТО через фор-ич или через стрим апи? В чем сок использования для простых операций? Только лишь в читабельном и компактном коде?
@kunnilinux
@kunnilinux 5 жыл бұрын
я сразу поясню, я новичок и я как раз из тех "староверов", которые все до сих пор делают в циклах, ибо так научился изначально, а чтобы постичь новое, надо сперва понять преимущества нового над старым
@maksiml6298
@maksiml6298 5 жыл бұрын
Компактность. Big O не зависит что используется, и там и там возможно медленная скорость.
@h00per12
@h00per12 5 жыл бұрын
Вообще не факт что стримы медленнее, может там под капотом jvm как-то оптимизирует это дело. И даже если и медленнее, то вопрос только в том что тебе нужно читабельный код или производительность. По дефолту на первом месте читабельный код, а декларативный подход(функциональщина, стримы) проще читать нежели императивный(циклы). Очень узкий кейс должен быть, когда ты не юзаешь стримы ради производительности, возможно, тебе тогда вообще не стоит писать на java, если тебе нужна производительность, посмотри в сторону С++, например.
@andrewcool482
@andrewcool482 5 жыл бұрын
blog.jooq.org/2015/12/08/3-reasons-why-you-shouldnt-replace-your-for-loops-by-stream-foreach/
@user-wh8ye3id7s
@user-wh8ye3id7s 2 жыл бұрын
Голова задымилась😁
@user-wh8ye3id7s
@user-wh8ye3id7s 2 жыл бұрын
Спасибо автор! Огромная работа проделана и всего в 27 минут вложили! Искусство!
@sagirovalinda9743
@sagirovalinda9743 4 жыл бұрын
Я может немного туплю, но как так получается что вы просто пишете вызов стрима(или любого метода), а идея сама дополняет тем, что кладет его в переменную с нужным обозначением вида? Пока я не объявлю новую переменную, я не могу вызвать Stream.of или что-то другое
@xWarTeX
@xWarTeX 3 жыл бұрын
ctrl+alt+v и идея сама засунет все в переменную если это возможно
@MaksymVashchenko
@MaksymVashchenko 5 жыл бұрын
Раз ты стримы затронул, может и лямды уже добьешь туда сразу?)
@letsCodeDru
@letsCodeDru 5 жыл бұрын
Угу. Запланировано ужо.
@alexanderkadatskiy7986
@alexanderkadatskiy7986 4 жыл бұрын
@@letsCodeDru Спасибо за супер-видос! А лямбды выйдут? :)
@AlexZvukov
@AlexZvukov 3 жыл бұрын
10:50 Пример с reduce() и рекурсией пришлось пересматривать несколько раз пока усвоил. Это нормально? :D
@letsCodeDru
@letsCodeDru 3 жыл бұрын
Чтобы понять рекурсию, нужно понять рекурсию
@user-il1dr9wi8h
@user-il1dr9wi8h Жыл бұрын
like!
@denwerxampp4035
@denwerxampp4035 2 жыл бұрын
ребята, подскажите сочетание клавиш на 9:34 )
@gennadyshevchenko7940
@gennadyshevchenko7940 Жыл бұрын
возможно ctrl+alt+enter на винде.
@almasabdrazak5089
@almasabdrazak5089 5 жыл бұрын
Стримы от io ресурсов , таких как файл, нужно явно закрывать или оборачивать в try with resources
@GameForYouOnline
@GameForYouOnline Жыл бұрын
или аналогичной структуре
@batonsudby
@batonsudby 2 жыл бұрын
😀
@Cucumber83
@Cucumber83 4 жыл бұрын
что это за тема в идеи?
@letsCodeDru
@letsCodeDru 4 жыл бұрын
Darcula
@Cucumber83
@Cucumber83 4 жыл бұрын
letsCode спасибо! странно, она выглядит совсем не так как у меня ( наверное от ОС зависит
@sergeyzakharchenko1706
@sergeyzakharchenko1706 4 жыл бұрын
Джава, а не ява!!!
@letsCodeDru
@letsCodeDru 4 жыл бұрын
Ойфсё
@Teramozg
@Teramozg Жыл бұрын
Скорость понимания видео рассчитана как минимум на мидла
@ZeBatua
@ZeBatua 2 ай бұрын
Видео для тех, кто уже что-то знает про стримы. Я вообще ничего не понял. Куда то летит, миллион всего объясняет. 0 шансов запомнить и тем более понять
@Youtooobo
@Youtooobo Жыл бұрын
Классно. Но ничего не понятно )
@oleksa537
@oleksa537 Жыл бұрын
ява - это мотоцикол. А язык программирования - это джава.
@Renzo_Asterio
@Renzo_Asterio Жыл бұрын
2430
@dv5686
@dv5686 4 жыл бұрын
Какая нафиг Ява?))) ничего что создатели языка называют ее джава?)))
@kolob204
@kolob204 3 жыл бұрын
Еще за запятые его поругайте : ай яй яй, дядя Андрей, такой бАльшой и усатый, а все "ошибаешся"
@dv5686
@dv5686 3 жыл бұрын
Иван Иванов спасибо, надо щемить лоха и за запястья
@kolob204
@kolob204 3 жыл бұрын
@@dv5686 как то странно слышать спасибо, после сарказма.
@dv5686
@dv5686 3 жыл бұрын
Иван Иванов сарказм, который мы заслужили:)))
@gennadyshevchenko7940
@gennadyshevchenko7940 Жыл бұрын
Самого интересного нет.
@Youtooobo
@Youtooobo 6 ай бұрын
Ужасное объяснение.
Новое в JDK 14 (синтаксис)
25:28
letsCode
Рет қаралды 26 М.
КАРМАНЧИК 2 СЕЗОН 5 СЕРИЯ
27:21
Inter Production
Рет қаралды 580 М.
ELE QUEBROU A TAÇA DE FUTEBOL
00:45
Matheus Kriwat
Рет қаралды 20 МЛН
1❤️
00:20
すしらーめん《りく》
Рет қаралды 32 МЛН
Lambda Expressions in Java - Full Simple Tutorial
13:05
Coding with John
Рет қаралды 696 М.
Markdown - напиши README за 2 минуты
21:40
letsCode
Рет қаралды 48 М.
Сергей Куксенко - Stream API, часть 1
1:13:18
JPoint, Joker и JUG ru
Рет қаралды 81 М.
Stream API in Java
26:04
Telusko
Рет қаралды 266 М.
Многопоточность глазами разработчика
1:36:04
Functional Programming with Java Streams API
50:00
Amigoscode
Рет қаралды 171 М.
Лямбда-выражения в Java 8
1:09:00
SpecialistTV
Рет қаралды 112 М.