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

Sdílet
Vložit
  • čas přidán 5. 02. 2019
  • 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...

Komentáře • 104

  • @letsCodeDru
    @letsCodeDru  Před 5 lety +34

    СОДЕРЖАНИЕ
    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 Před 3 lety +1

      добавь в описание 0:00 Старт и тайм-коды попадут на ленту видео

  • @victormog
    @victormog Před 5 lety +45

    *Отличное наглядное пособие по Stream!*
    Для полноты картины только, можно было бы в начале сказать, что такое Stream...

    • @letsCodeDru
      @letsCodeDru  Před 5 lety +11

      Внезапно не подумал, что кто-то не знает. Зашоренность. :)

    • @victormog
      @victormog Před 5 lety +1

      @@letsCodeDru
      Не знает - ладно. Я до сих пор stream ассоциирую с С-шными потоками...

    • @kunnilinux
      @kunnilinux Před 5 lety +9

      @@letsCodeDru плюсую, может, в видео про лямбды пройдетесь по определениям стримов и лямбд одним махом?

  • @user-pw9ln6mr7c
    @user-pw9ln6mr7c Před 5 lety +22

    Очень полезное видео, спасибо!

  • @torpid0
    @torpid0 Před 2 lety

    Чрезвычайно содержательное видео! Все подробно и без ошибок, эканий и бэканий. За таймкоды в описании отдельное спасибо!

  • @dmitrymukhin9458
    @dmitrymukhin9458 Před 5 lety +6

    Спасибо большое!! Даешь очень просто приложения по Spring Cloud!! =))

  • @mr_robot_20_04
    @mr_robot_20_04 Před 5 lety +1

    Годные и информативные видосы, спасибо за контент! Было бы здорово увидеть туториал по Spring security в вашем исполнении) Желательно более углубленно и информативно нежели уже есть на канале

  • @anjelomanoranjan
    @anjelomanoranjan Před 7 měsíci

    видео изумительно) спасибо! Жду новых видео по Java

  • @user-sd4bw9gh1l
    @user-sd4bw9gh1l Před 2 lety +4

    Лучшее видео по стрим апи, которое я видел. Было бы классно углубится в эту тему и ещё рассказать про функциональные интерфейсы. Часто спрашивают на собеседованиях именно о них)

  • @nsandrus
    @nsandrus Před 4 lety +4

    Отличная демонстрация Stream API, с удовольствием посмотрел бы еще по Optional

  • @D.P._
    @D.P._ Před 4 lety +2

    Как-то пропустил) Крутой видос, и реально полезный! Исправляюсь: Like as usual!

  • @faniskhalikov9736
    @faniskhalikov9736 Před rokem

    Круть! Концентрация полезности зашкаливает )) При этом доступность и изложение инфы на высоте

  • @eugenekotsaba6512
    @eugenekotsaba6512 Před 4 lety +5

    это самое содержательное видео на ютубе , лайк)

  • @user-rg1jw3xq7b
    @user-rg1jw3xq7b Před 5 lety +3

    одна из самых актуальных тем, спасибо!

  • @kunnilinux
    @kunnilinux Před 5 lety +3

    Большое спасибо за видео!!! Даже не знаю, как еще выразить благодарность. Дело в том, что я джун в компании, устроился совсем недавно, и темы ваших роликов как раз совпадают с изучаемыми мной темами.

  • @user-zy1km1px6d
    @user-zy1km1px6d Před 4 lety +1

    Просто здорово. Спасибо за труд.

  • @romanmotovilov129
    @romanmotovilov129 Před 5 lety +1

    Спасибо. Отличный урок!

  • @tomozi1
    @tomozi1 Před 5 lety +1

    Спасибо за превосходные видео!

  • @irinash4314
    @irinash4314 Před rokem

    Спасибо, очень полезное видео, большой охват информации о применении стримов. 👍

  • @Qwertyuiopasdfghjklzxcvbnm4

    Очень качественное, информативное объяснение!

  • @Sergey111111
    @Sergey111111 Před 5 lety +7

    Очень круто, кратко и емко!

  • @ZhivaPR
    @ZhivaPR Před 5 lety +2

    Хорошая подача, спасибо.

  • @vp9878
    @vp9878 Před 4 lety +1

    Спасибо за урок!

  • @ievgengrozenok1803
    @ievgengrozenok1803 Před 5 lety +1

    Спасибо! Все было понятно

  • @user-arbuzer1133
    @user-arbuzer1133 Před 3 lety

    Спасибо БОЛЬШОЕ за видео! Пока что не понятно как работает эта тёмная магия)) Нужно ещё погонять этот ролик speed 0,1))

  • @dmitriy5248
    @dmitriy5248 Před 3 lety +1

    Шикарное видео! Спасибо

  • @pavelminsk
    @pavelminsk Před 2 lety

    Очень круто! Спасибо!

  • @iryna6389
    @iryna6389 Před 5 lety +1

    Привет, огромное спасибо за видео.

  • @way2play980
    @way2play980 Před 4 měsíci

    Спасибо, очень интересно!

  • @user-eg2fx6si6i
    @user-eg2fx6si6i Před 5 lety +2

    Спасибо)

  • @Kepchyk1101
    @Kepchyk1101 Před 8 měsíci

    Очень позновательно, быстро и без воды. Не как вот эти: а сегодня мы бе ме ге, аааа, еее. 👍🏻

  • @user-pi3mv8vq6e
    @user-pi3mv8vq6e Před 4 lety +10

    Сначала было тяжело понимать, потом скорость 0,75 поставил и класс. Осталось заставить себя перейти с циклов на стримы, чтобы практикой это все закрепить

    • @pvtitov
      @pvtitov Před 3 lety

      codewars например хорошо помогает

    • @pvtitov
      @pvtitov Před 3 lety +2

      спасибо за идею про скорость! реально нормально стало! автор на спидах)))

    • @user-fj3rr9mi4x
      @user-fj3rr9mi4x Před 2 lety +1

      Я как изучил стримы тоже везде их лепил, а оказывается, как отметил автор, только в больших коллекциях получается выигрыш в производительности.

    • @onizuka_cs2
      @onizuka_cs2 Před 2 lety

      @@user-fj3rr9mi4x речь шла о parallel stream.

  • @user-cv1xd9vb4f
    @user-cv1xd9vb4f Před 5 lety

    Прикольная штука. Недавно узнал об akka-streams, по документации можно более наглядно посмотреть и понять для чего они вообще нужны. +back pressure

  • @shinshin7253
    @shinshin7253 Před rokem

    Годно! Спасибо

  • @Peter-jp9zw
    @Peter-jp9zw Před 5 lety +2

    ты классный, спасибо тебе)

  • @taraskutselya1326
    @taraskutselya1326 Před 5 lety +6

    То что надо! Лайк, подписка, колокольчик (вру... давно подписан 😀)

  • @romantsyupryk3009
    @romantsyupryk3009 Před 5 lety

    Thank you so much.

  • @alexandergrankin8829
    @alexandergrankin8829 Před 3 lety +2

    Пушка!

  • @user-ce3lm7sz1k
    @user-ce3lm7sz1k Před 4 lety +6

    супер! мне (как тупому) ничего не понятно, но кажется что объяснение хорошее!)

    • @letsCodeDru
      @letsCodeDru  Před 4 lety +3

      Это норма. Я учебные видосы и статьи тоже по несколько раз пересматриваю/перечитываю

    • @russia_winner
      @russia_winner Před 3 lety +1

      @@letsCodeDru дорогу осилит идущий

  • @withotsoul7252
    @withotsoul7252 Před 2 lety

    хороший урок!

  • @andrewaliokhin8306
    @andrewaliokhin8306 Před 2 lety

    Оче6нь информативною. Спасибо

  • @mercurial-flower
    @mercurial-flower Před 2 lety

    Класс!

  • @user-il1dr9wi8h
    @user-il1dr9wi8h Před 2 lety

    like!

  • @margulankurmangaly9150
    @margulankurmangaly9150 Před 5 lety +2

    По твоим видосам устроился на работу)))))))) Спасибо за годноту

    • @letsCodeDru
      @letsCodeDru  Před 5 lety +9

      Рад, что имею к этому отношение. Проставляйся с первой ЗП, реквизиты под каждым видео 😅

  • @moovestone
    @moovestone Před 2 měsíci

    спасибо. только это походу для тех, кто уже работает разработчиком, а не изучает)

  • @gorsky6382
    @gorsky6382 Před 3 lety

    Вы конечно извините, но это лайк и подписка..

  • @levvv1000
    @levvv1000 Před 4 lety +1

    Видео хорошее, только ваш обход списка работает, если самая корневая нода (у которой нет родителя) находится под первым индексом в списке, иначе она будет будет рекурсивно передаваться как аргумент чайлд департамента и дерево не сможет создаться, так как у нескольких департаментов не будет родителей

  • @shtan5583
    @shtan5583 Před 5 lety +1

    Стримы топ, но пользоваться ими без документации я почему-то не могу. Куча похожих методов и подводных камней.

  • @batonsudby
    @batonsudby Před 2 lety

    😀

  • @artyomgrigorev2186
    @artyomgrigorev2186 Před rokem

    Например, моднейшее написание стримов, например 😃

  • @user-wh8ye3id7s
    @user-wh8ye3id7s Před 2 lety

    Голова задымилась😁

    • @user-wh8ye3id7s
      @user-wh8ye3id7s Před 2 lety

      Спасибо автор! Огромная работа проделана и всего в 27 минут вложили! Искусство!

  • @K4sik
    @K4sik Před 5 lety

    Видео очень полезное, но будут уроки по Spring Boot с использованием JavaScript и framework Ajax, JQuery ......?

  • @mirnijalexey2765
    @mirnijalexey2765 Před 3 lety +1

    2:12 у меня комбинация Ctrl+Alt+Shift почему то не работает на Винде, может какая то другая комбинация по умолчанию?

  • @pvtitov
    @pvtitov Před 3 lety +7

    боже чтоже так быстро то у меня сейчас голова взорвется, можно тоже самое но 10 видео продолжительностью как это? XD

    • @koKS.1k
      @koKS.1k Před 3 lety +2

      Скорость воспроизведения х0,75 и всё четко (=

  • @sander02rubenkov62
    @sander02rubenkov62 Před 4 lety +1

    2:15
    Ребят, обертки только для double,long,int - и все!
    Никаких "boolean и так далее" - нет.

  • @kunnilinux
    @kunnilinux Před 5 lety +1

    Что можете сказать по поводу производительности стримов в сравнении со старыми подходами? Например, что быстрее, конвертировать коллекцию доменов в коллекцию ДТО через фор-ич или через стрим апи? В чем сок использования для простых операций? Только лишь в читабельном и компактном коде?

    • @kunnilinux
      @kunnilinux Před 5 lety +1

      я сразу поясню, я новичок и я как раз из тех "староверов", которые все до сих пор делают в циклах, ибо так научился изначально, а чтобы постичь новое, надо сперва понять преимущества нового над старым

    • @maksiml6298
      @maksiml6298 Před 5 lety

      Компактность. Big O не зависит что используется, и там и там возможно медленная скорость.

    • @h00per12
      @h00per12 Před 5 lety +1

      Вообще не факт что стримы медленнее, может там под капотом jvm как-то оптимизирует это дело. И даже если и медленнее, то вопрос только в том что тебе нужно читабельный код или производительность. По дефолту на первом месте читабельный код, а декларативный подход(функциональщина, стримы) проще читать нежели императивный(циклы). Очень узкий кейс должен быть, когда ты не юзаешь стримы ради производительности, возможно, тебе тогда вообще не стоит писать на java, если тебе нужна производительность, посмотри в сторону С++, например.

    • @andrewcool482
      @andrewcool482 Před 5 lety

      blog.jooq.org/2015/12/08/3-reasons-why-you-shouldnt-replace-your-for-loops-by-stream-foreach/

  • @b213videoz
    @b213videoz Před měsícem

    Hipster stuff

  • @AlexZvukov
    @AlexZvukov Před 3 lety +1

    10:50 Пример с reduce() и рекурсией пришлось пересматривать несколько раз пока усвоил. Это нормально? :D

    • @letsCodeDru
      @letsCodeDru  Před 3 lety +3

      Чтобы понять рекурсию, нужно понять рекурсию

  • @MaksymVashchenko
    @MaksymVashchenko Před 5 lety +6

    Раз ты стримы затронул, может и лямды уже добьешь туда сразу?)

    • @letsCodeDru
      @letsCodeDru  Před 5 lety +8

      Угу. Запланировано ужо.

    • @alexanderkadatskiy7986
      @alexanderkadatskiy7986 Před 4 lety

      @@letsCodeDru Спасибо за супер-видос! А лямбды выйдут? :)

  • @sagirovalinda9743
    @sagirovalinda9743 Před 4 lety

    Я может немного туплю, но как так получается что вы просто пишете вызов стрима(или любого метода), а идея сама дополняет тем, что кладет его в переменную с нужным обозначением вида? Пока я не объявлю новую переменную, я не могу вызвать Stream.of или что-то другое

    • @xWarTeX
      @xWarTeX Před 3 lety

      ctrl+alt+v и идея сама засунет все в переменную если это возможно

  • @denwerxampp4035
    @denwerxampp4035 Před 2 lety

    ребята, подскажите сочетание клавиш на 9:34 )

  • @almasabdrazak5089
    @almasabdrazak5089 Před 5 lety +2

    Стримы от io ресурсов , таких как файл, нужно явно закрывать или оборачивать в try with resources

  • @sergeyzakharchenko1706
    @sergeyzakharchenko1706 Před 4 lety +1

    Джава, а не ява!!!

  • @Teramozg
    @Teramozg Před rokem

    Скорость понимания видео рассчитана как минимум на мидла

  • @Youtooobo
    @Youtooobo Před rokem

    Классно. Но ничего не понятно )

  • @Cucumber83
    @Cucumber83 Před 4 lety

    что это за тема в идеи?

    • @letsCodeDru
      @letsCodeDru  Před 4 lety

      Darcula

    • @Cucumber83
      @Cucumber83 Před 4 lety

      letsCode спасибо! странно, она выглядит совсем не так как у меня ( наверное от ОС зависит

  • @Renzo_Asterio
    @Renzo_Asterio Před rokem

    2430

  • @ZeBatua
    @ZeBatua Před 3 měsíci

    Видео для тех, кто уже что-то знает про стримы. Я вообще ничего не понял. Куда то летит, миллион всего объясняет. 0 шансов запомнить и тем более понять

  • @oleksa537
    @oleksa537 Před rokem

    ява - это мотоцикол. А язык программирования - это джава.

  • @gennadyshevchenko7940

    Самого интересного нет.

  • @dv5686
    @dv5686 Před 4 lety

    Какая нафиг Ява?))) ничего что создатели языка называют ее джава?)))

    • @kolob204
      @kolob204 Před 3 lety

      Еще за запятые его поругайте : ай яй яй, дядя Андрей, такой бАльшой и усатый, а все "ошибаешся"

    • @dv5686
      @dv5686 Před 3 lety

      Иван Иванов спасибо, надо щемить лоха и за запястья

    • @kolob204
      @kolob204 Před 3 lety

      @@dv5686 как то странно слышать спасибо, после сарказма.

    • @dv5686
      @dv5686 Před 3 lety

      Иван Иванов сарказм, который мы заслужили:)))

  • @Youtooobo
    @Youtooobo Před 7 měsíci

    Ужасное объяснение.