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

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

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 Старт и тайм-коды попадут на ленту видео
@torpid0
@torpid0 2 жыл бұрын
Чрезвычайно содержательное видео! Все подробно и без ошибок, эканий и бэканий. За таймкоды в описании отдельное спасибо!
@user-pw9ln6mr7c
@user-pw9ln6mr7c 5 жыл бұрын
Очень полезное видео, спасибо!
@dmitrymukhin9458
@dmitrymukhin9458 5 жыл бұрын
Спасибо большое!! Даешь очень просто приложения по Spring Cloud!! =))
@mr_robot_20_04
@mr_robot_20_04 5 жыл бұрын
Годные и информативные видосы, спасибо за контент! Было бы здорово увидеть туториал по Spring security в вашем исполнении) Желательно более углубленно и информативно нежели уже есть на канале
@anjelomanoranjan3908
@anjelomanoranjan3908 5 ай бұрын
видео изумительно) спасибо! Жду новых видео по Java
@user-rg1jw3xq7b
@user-rg1jw3xq7b 5 жыл бұрын
одна из самых актуальных тем, спасибо!
@eugenekotsaba6512
@eugenekotsaba6512 4 жыл бұрын
это самое содержательное видео на ютубе , лайк)
@D.P._
@D.P._ 4 жыл бұрын
Как-то пропустил) Крутой видос, и реально полезный! Исправляюсь: Like as usual!
@kunnilinux
@kunnilinux 5 жыл бұрын
Большое спасибо за видео!!! Даже не знаю, как еще выразить благодарность. Дело в том, что я джун в компании, устроился совсем недавно, и темы ваших роликов как раз совпадают с изучаемыми мной темами.
@user-sd4bw9gh1l
@user-sd4bw9gh1l 2 жыл бұрын
Лучшее видео по стрим апи, которое я видел. Было бы классно углубится в эту тему и ещё рассказать про функциональные интерфейсы. Часто спрашивают на собеседованиях именно о них)
@faniskhalikov9736
@faniskhalikov9736 Жыл бұрын
Круть! Концентрация полезности зашкаливает )) При этом доступность и изложение инфы на высоте
@user-zy1km1px6d
@user-zy1km1px6d 3 жыл бұрын
Просто здорово. Спасибо за труд.
@irinash4314
@irinash4314 Жыл бұрын
Спасибо, очень полезное видео, большой охват информации о применении стримов. 👍
@tomozi1
@tomozi1 5 жыл бұрын
Спасибо за превосходные видео!
@nsandrus
@nsandrus 3 жыл бұрын
Отличная демонстрация Stream API, с удовольствием посмотрел бы еще по Optional
@ZhivaPR
@ZhivaPR 5 жыл бұрын
Хорошая подача, спасибо.
@Qwertyuiopasdfghjklzxcvbnm4
@Qwertyuiopasdfghjklzxcvbnm4 3 жыл бұрын
Очень качественное, информативное объяснение!
@romanmotovilov129
@romanmotovilov129 4 жыл бұрын
Спасибо. Отличный урок!
@victormog
@victormog 5 жыл бұрын
*Отличное наглядное пособие по Stream!* Для полноты картины только, можно было бы в начале сказать, что такое Stream...
@letsCodeDru
@letsCodeDru 5 жыл бұрын
Внезапно не подумал, что кто-то не знает. Зашоренность. :)
@victormog
@victormog 5 жыл бұрын
@@letsCodeDru Не знает - ладно. Я до сих пор stream ассоциирую с С-шными потоками...
@kunnilinux
@kunnilinux 5 жыл бұрын
@@letsCodeDru плюсую, может, в видео про лямбды пройдетесь по определениям стримов и лямбд одним махом?
@vp9878
@vp9878 3 жыл бұрын
Спасибо за урок!
@dmitriy5248
@dmitriy5248 3 жыл бұрын
Шикарное видео! Спасибо
@ievgengrozenok1803
@ievgengrozenok1803 5 жыл бұрын
Спасибо! Все было понятно
@user-arbuzer1133
@user-arbuzer1133 3 жыл бұрын
Спасибо БОЛЬШОЕ за видео! Пока что не понятно как работает эта тёмная магия)) Нужно ещё погонять этот ролик speed 0,1))
@iryna6389
@iryna6389 5 жыл бұрын
Привет, огромное спасибо за видео.
@pavelminsk
@pavelminsk 2 жыл бұрын
Очень круто! Спасибо!
@Sergey111111
@Sergey111111 5 жыл бұрын
Очень круто, кратко и емко!
@eastwood8628
@eastwood8628 4 жыл бұрын
и четко)
@user-eg2fx6si6i
@user-eg2fx6si6i 5 жыл бұрын
Спасибо)
@way2play980
@way2play980 Ай бұрын
Спасибо, очень интересно!
@taraskutselya1326
@taraskutselya1326 5 жыл бұрын
То что надо! Лайк, подписка, колокольчик (вру... давно подписан 😀)
@Peter-jp9zw
@Peter-jp9zw 5 жыл бұрын
ты классный, спасибо тебе)
@shinshin7253
@shinshin7253 Жыл бұрын
Годно! Спасибо
@user-cv1xd9vb4f
@user-cv1xd9vb4f 5 жыл бұрын
Прикольная штука. Недавно узнал об akka-streams, по документации можно более наглядно посмотреть и понять для чего они вообще нужны. +back pressure
@romantsyupryk3009
@romantsyupryk3009 4 жыл бұрын
Thank you so much.
@alexandergrankin8829
@alexandergrankin8829 3 жыл бұрын
Пушка!
@Kepchyk1101
@Kepchyk1101 6 ай бұрын
Очень позновательно, быстро и без воды. Не как вот эти: а сегодня мы бе ме ге, аааа, еее. 👍🏻
@withotsoul7252
@withotsoul7252 2 жыл бұрын
хороший урок!
@andrewaliokhin8306
@andrewaliokhin8306 2 жыл бұрын
Оче6нь информативною. Спасибо
@user-pi3mv8vq6e
@user-pi3mv8vq6e 3 жыл бұрын
Сначала было тяжело понимать, потом скорость 0,75 поставил и класс. Осталось заставить себя перейти с циклов на стримы, чтобы практикой это все закрепить
@pvtitov
@pvtitov 3 жыл бұрын
codewars например хорошо помогает
@pvtitov
@pvtitov 3 жыл бұрын
спасибо за идею про скорость! реально нормально стало! автор на спидах)))
@user-fj3rr9mi4x
@user-fj3rr9mi4x Жыл бұрын
Я как изучил стримы тоже везде их лепил, а оказывается, как отметил автор, только в больших коллекциях получается выигрыш в производительности.
@4glazy
@4glazy Жыл бұрын
@@user-fj3rr9mi4x речь шла о parallel stream.
@mercurial-flower
@mercurial-flower Жыл бұрын
Класс!
@margulankurmangaly9150
@margulankurmangaly9150 5 жыл бұрын
По твоим видосам устроился на работу)))))))) Спасибо за годноту
@letsCodeDru
@letsCodeDru 5 жыл бұрын
Рад, что имею к этому отношение. Проставляйся с первой ЗП, реквизиты под каждым видео 😅
@user-ce3lm7sz1k
@user-ce3lm7sz1k 4 жыл бұрын
супер! мне (как тупому) ничего не понятно, но кажется что объяснение хорошее!)
@letsCodeDru
@letsCodeDru 4 жыл бұрын
Это норма. Я учебные видосы и статьи тоже по несколько раз пересматриваю/перечитываю
@russia_winner
@russia_winner 3 жыл бұрын
@@letsCodeDru дорогу осилит идущий
@K4sik
@K4sik 5 жыл бұрын
Видео очень полезное, но будут уроки по Spring Boot с использованием JavaScript и framework Ajax, JQuery ......?
@gorsky6382
@gorsky6382 3 жыл бұрын
Вы конечно извините, но это лайк и подписка..
@user-il1dr9wi8h
@user-il1dr9wi8h Жыл бұрын
like!
@levvv1000
@levvv1000 4 жыл бұрын
Видео хорошее, только ваш обход списка работает, если самая корневая нода (у которой нет родителя) находится под первым индексом в списке, иначе она будет будет рекурсивно передаваться как аргумент чайлд департамента и дерево не сможет создаться, так как у нескольких департаментов не будет родителей
@shtan5583
@shtan5583 5 жыл бұрын
Стримы топ, но пользоваться ими без документации я почему-то не могу. Куча похожих методов и подводных камней.
@moovestone
@moovestone 13 күн бұрын
спасибо. только это походу для тех, кто уже работает разработчиком, а не изучает)
@sander02rubenkov62
@sander02rubenkov62 3 жыл бұрын
2:15 Ребят, обертки только для double,long,int - и все! Никаких "boolean и так далее" - нет.
@artyomgrigorev2186
@artyomgrigorev2186 Жыл бұрын
Например, моднейшее написание стримов, например 😃
@user-wh8ye3id7s
@user-wh8ye3id7s 2 жыл бұрын
Голова задымилась😁
@user-wh8ye3id7s
@user-wh8ye3id7s 2 жыл бұрын
Спасибо автор! Огромная работа проделана и всего в 27 минут вложили! Искусство!
@mirnijalexey2765
@mirnijalexey2765 3 жыл бұрын
2:12 у меня комбинация Ctrl+Alt+Shift почему то не работает на Винде, может какая то другая комбинация по умолчанию?
@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/
@pvtitov
@pvtitov 3 жыл бұрын
боже чтоже так быстро то у меня сейчас голова взорвется, можно тоже самое но 10 видео продолжительностью как это? XD
@koKS.1k
@koKS.1k 3 жыл бұрын
Скорость воспроизведения х0,75 и всё четко (=
@batonsudby
@batonsudby 2 жыл бұрын
😀
@AlexZvukov
@AlexZvukov 3 жыл бұрын
10:50 Пример с reduce() и рекурсией пришлось пересматривать несколько раз пока усвоил. Это нормально? :D
@letsCodeDru
@letsCodeDru 3 жыл бұрын
Чтобы понять рекурсию, нужно понять рекурсию
@almasabdrazak5089
@almasabdrazak5089 5 жыл бұрын
Стримы от io ресурсов , таких как файл, нужно явно закрывать или оборачивать в try with resources
@GameForYouOnline
@GameForYouOnline Жыл бұрын
или аналогичной структуре
@MaksymVashchenko
@MaksymVashchenko 5 жыл бұрын
Раз ты стримы затронул, может и лямды уже добьешь туда сразу?)
@letsCodeDru
@letsCodeDru 5 жыл бұрын
Угу. Запланировано ужо.
@alexanderkadatskiy7986
@alexanderkadatskiy7986 4 жыл бұрын
@@letsCodeDru Спасибо за супер-видос! А лямбды выйдут? :)
@sagirovalinda9743
@sagirovalinda9743 4 жыл бұрын
Я может немного туплю, но как так получается что вы просто пишете вызов стрима(или любого метода), а идея сама дополняет тем, что кладет его в переменную с нужным обозначением вида? Пока я не объявлю новую переменную, я не могу вызвать Stream.of или что-то другое
@xWarTeX
@xWarTeX 3 жыл бұрын
ctrl+alt+v и идея сама засунет все в переменную если это возможно
@denwerxampp4035
@denwerxampp4035 2 жыл бұрын
ребята, подскажите сочетание клавиш на 9:34 )
@gennadyshevchenko7940
@gennadyshevchenko7940 Жыл бұрын
возможно ctrl+alt+enter на винде.
@Teramozg
@Teramozg Жыл бұрын
Скорость понимания видео рассчитана как минимум на мидла
@Cucumber83
@Cucumber83 4 жыл бұрын
что это за тема в идеи?
@letsCodeDru
@letsCodeDru 4 жыл бұрын
Darcula
@Cucumber83
@Cucumber83 4 жыл бұрын
letsCode спасибо! странно, она выглядит совсем не так как у меня ( наверное от ОС зависит
@sergeyzakharchenko1706
@sergeyzakharchenko1706 4 жыл бұрын
Джава, а не ява!!!
@letsCodeDru
@letsCodeDru 4 жыл бұрын
Ойфсё
@ZeBatua
@ZeBatua Ай бұрын
Видео для тех, кто уже что-то знает про стримы. Я вообще ничего не понял. Куда то летит, миллион всего объясняет. 0 шансов запомнить и тем более понять
@Youtooobo
@Youtooobo Жыл бұрын
Классно. Но ничего не понятно )
@Renzo_Asterio
@Renzo_Asterio Жыл бұрын
2430
@oleksa537
@oleksa537 Жыл бұрын
ява - это мотоцикол. А язык программирования - это джава.
@dv5686
@dv5686 3 жыл бұрын
Какая нафиг Ява?))) ничего что создатели языка называют ее джава?)))
@kolob204
@kolob204 3 жыл бұрын
Еще за запятые его поругайте : ай яй яй, дядя Андрей, такой бАльшой и усатый, а все "ошибаешся"
@dv5686
@dv5686 3 жыл бұрын
Иван Иванов спасибо, надо щемить лоха и за запястья
@kolob204
@kolob204 3 жыл бұрын
@@dv5686 как то странно слышать спасибо, после сарказма.
@dv5686
@dv5686 3 жыл бұрын
Иван Иванов сарказм, который мы заслужили:)))
@gennadyshevchenko7940
@gennadyshevchenko7940 Жыл бұрын
Самого интересного нет.
@Youtooobo
@Youtooobo 5 ай бұрын
Ужасное объяснение.
Новое в JDK 14 (синтаксис)
25:28
letsCode
Рет қаралды 26 М.
Lambda Expressions in Java - Full Simple Tutorial
13:05
Coding with John
Рет қаралды 683 М.
Лекция 8. Stream API (Программирование на Java)
1:45:01
Computer Science Center
Рет қаралды 25 М.
Подготовка к Java собеседованию #6 Stream API
32:06
Сергей Куксенко - Stream API, часть 1
1:13:18
JPoint, Joker и JUG ru
Рет қаралды 81 М.
РАЗБОР вопросов с СОБЕСЕДОВАНИЙ / Автоматизация ТЕСТИРОВАНИЯ на JAVA
37:05
TeachMeSkills Школа программирования
Рет қаралды 21 М.
Java. Для чего нужен Optional?
18:26
Sergey Arkhipov Java Tutorials
Рет қаралды 11 М.
RxJava. Неформальное введение.
23:15
Sergey Arkhipov Java Tutorials
Рет қаралды 6 М.
Markdown - напиши README за 2 минуты
21:40
letsCode
Рет қаралды 48 М.