Java Stream API: функционально, модно, молодёжно!
Java Stream API: функциональный подход к работе с коллекциями в Java 8+. Продвинутые методы работы с коллекциями. Содержание ниже Казалось бы, чего такого можно придумать в обработке коллеций: взяли и обошли в цикле, но нет. Если мы взглянем в те же популярные JavaScript, ruby, python или более близкие JVM языки, то увидим, что можно жить проще, писать меньше кода и получать более читабельные обработчики. Инженеры из Oracle напрягли мозги и осчастливили миллионы разработчиков во всём мире. Присоединимся же и мы к всеобщей радости, кратко ознакомившись с этим замечательным API. Код из видео: https://github.com/drucoder/javalearn/tree/StreamApi Хорошая статья по теме (спасибо Чеширу, что нашёл и поделился в чатике): https://annimon.com/article/2778 Видео про Lombok: https://www.youtube.com/watch?v=QmsMWCIf3nc СОДЕРЖАНИЕ https://www.youtube.com/watch?v=RzEiCguFZiY&t=52s Стримы из объектов файловой системы https://www.youtube.com/watch?v=RzEiCguFZiY&t=55s Files.lines() https://www.youtube.com/watch?v=RzEiCguFZiY&t=71s Files.list() https://www.youtube.com/watch?v=RzEiCguFZiY&t=80s Files.walk() https://www.youtube.com/watch?v=RzEiCguFZiY&t=110s Стримы из примитивов https://www.youtube.com/watch?v=RzEiCguFZiY&t=122s IntStream https://www.youtube.com/watch?v=RzEiCguFZiY&t=132s DoubleStream https://www.youtube.com/watch?v=RzEiCguFZiY&t=143s IntStream.range() https://www.youtube.com/watch?v=RzEiCguFZiY&t=162s IntStream.rangeClosed() https://www.youtube.com/watch?v=RzEiCguFZiY&t=174s Arrays.stream() Стримы из объектов https://www.youtube.com/watch?v=RzEiCguFZiY&t=191s Stream.of(Object) https://www.youtube.com/watch?v=RzEiCguFZiY&t=215s Stream.builder() https://www.youtube.com/watch?v=RzEiCguFZiY&t=234s Collection.stream() https://www.youtube.com/watch?v=RzEiCguFZiY&t=255s Collection.parallelStream() https://www.youtube.com/watch?v=RzEiCguFZiY&t=285s Stream.generate() https://www.youtube.com/watch?v=RzEiCguFZiY&t=337s Stream.iterate() https://www.youtube.com/watch?v=RzEiCguFZiY&t=386s Stream.concat() Терминальные операции https://www.youtube.com/watch?v=RzEiCguFZiY&t=435s Stream.count() https://www.youtube.com/watch?v=RzEiCguFZiY&t=440s Stream.forEach() https://www.youtube.com/watch?v=RzEiCguFZiY&t=472s Collection.forEach() https://www.youtube.com/watch?v=RzEiCguFZiY&t=484s Stream.forEachOrdered() https://www.youtube.com/watch?v=RzEiCguFZiY&t=507s Stream.collect() https://www.youtube.com/watch?v=RzEiCguFZiY&t=531s Stream.toArray() https://www.youtube.com/watch?v=RzEiCguFZiY&t=536s Stream.collect(toMap()) https://www.youtube.com/watch?v=RzEiCguFZiY&t=580s IntStream.reduce() https://www.youtube.com/watch?v=RzEiCguFZiY&t=606s Stream.reduce() https://www.youtube.com/watch?v=RzEiCguFZiY&t=741s IntStream.average(), IntStream.max(), IntStream.min(), IntStream.sum(), IntStream.summaryStatictics() https://www.youtube.com/watch?v=RzEiCguFZiY&t=764s Stream.max(), Stream.min() https://www.youtube.com/watch?v=RzEiCguFZiY&t=789s Stream.findAny(), Stream.findFirst() https://www.youtube.com/watch?v=RzEiCguFZiY&t=815s Stream.noneMatch() https://www.youtube.com/watch?v=RzEiCguFZiY&t=842s Stream.anyMatch() https://www.youtube.com/watch?v=RzEiCguFZiY&t=853s Stream.allMatch() https://www.youtube.com/watch?v=RzEiCguFZiY&t=901s Трансформации стримов https://www.youtube.com/watch?v=RzEiCguFZiY&t=908s IntStream.mapToLong() https://www.youtube.com/watch?v=RzEiCguFZiY&t=919s IntStream.mapToObj() https://www.youtube.com/watch?v=RzEiCguFZiY&t=952s IntStream.distinct() https://www.youtube.com/watch?v=RzEiCguFZiY&t=968s Stream.filter() https://www.youtube.com/watch?v=RzEiCguFZiY&t=989s Stream.skip() https://www.youtube.com/watch?v=RzEiCguFZiY&t=994s Stream.limit() https://www.youtube.com/watch?v=RzEiCguFZiY&t=1046s Stream.sorted() https://www.youtube.com/watch?v=RzEiCguFZiY&t=1065s Stream.map() https://www.youtube.com/watch?v=RzEiCguFZiY&t=1081s Stream.peek() https://www.youtube.com/watch?v=RzEiCguFZiY&t=1126s Stream.takeWhile() https://www.youtube.com/watch?v=RzEiCguFZiY&t=1165s Stream.dropWhile() https://www.youtube.com/watch?v=RzEiCguFZiY&t=1280s Stream.flatMap() https://www.youtube.com/watch?v=RzEiCguFZiY&t=1429s Примеры использования ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ ➡ Твиттер: https://twitter.com/letsCodeDru ➡ Группа Вконтакте: https://vk.com/letscodedru ➡ Канал в Telegram: https://t.me/letsCode_dru ➡ Чат в Telegram: https://t.me/joinchat/FeiP9xEhqHajfqhLr4z-Nw ➡ Сервер в Discord: https://discord.gg/xs6XxSx ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ Поддержать проект: ➡ Patreon https://www.patreon.com/letscodedru ➡ Яндекс.Деньги https://money.yandex.ru/to/41001451675086 ➡ PayPal paypal.me/letscodedru ➡ Qiwi https://qiwi.me/letscode ➡ WebMoney/BitCoin https://funding.webmoney.ru/d/drucoder ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ ➡ Ссылка на канал: https://www.youtube.comhttps://www.youtube.com/channel/UC1g3kT0ZcSXt4_ZyJOshKJQ ➡ Ссылка на Яндекс.Дзен: https://zen.yandex.ru/media/id/5ac20956168a91ffeae449c5
Java Stream API: функциональный подход к работе с коллекциями в Java 8+. Продвинутые методы работы с коллекциями. Содержание ниже Казалось бы, чего такого можно придумать в обработке коллеций: взяли и обошли в цикле, но нет. Если мы взглянем в те же популярные JavaScript, ruby, python или более близкие JVM языки, то увидим, что можно жить проще, писать меньше кода и получать более читабельные обработчики. Инженеры из Oracle напрягли мозги и осчастливили миллионы разработчиков во всём мире. Присоединимся же и мы к всеобщей радости, кратко ознакомившись с этим замечательным API. Код из видео: https://github.com/drucoder/javalearn/tree/StreamApi Хорошая статья по теме (спасибо Чеширу, что нашёл и поделился в чатике): https://annimon.com/article/2778 Видео про Lombok: https://www.youtube.com/watch?v=QmsMWCIf3nc СОДЕРЖАНИЕ https://www.youtube.com/watch?v=RzEiCguFZiY&t=52s Стримы из объектов файловой системы https://www.youtube.com/watch?v=RzEiCguFZiY&t=55s Files.lines() https://www.youtube.com/watch?v=RzEiCguFZiY&t=71s Files.list() https://www.youtube.com/watch?v=RzEiCguFZiY&t=80s Files.walk() https://www.youtube.com/watch?v=RzEiCguFZiY&t=110s Стримы из примитивов https://www.youtube.com/watch?v=RzEiCguFZiY&t=122s IntStream https://www.youtube.com/watch?v=RzEiCguFZiY&t=132s DoubleStream https://www.youtube.com/watch?v=RzEiCguFZiY&t=143s IntStream.range() https://www.youtube.com/watch?v=RzEiCguFZiY&t=162s IntStream.rangeClosed() https://www.youtube.com/watch?v=RzEiCguFZiY&t=174s Arrays.stream() Стримы из объектов https://www.youtube.com/watch?v=RzEiCguFZiY&t=191s Stream.of(Object) https://www.youtube.com/watch?v=RzEiCguFZiY&t=215s Stream.builder() https://www.youtube.com/watch?v=RzEiCguFZiY&t=234s Collection.stream() https://www.youtube.com/watch?v=RzEiCguFZiY&t=255s Collection.parallelStream() https://www.youtube.com/watch?v=RzEiCguFZiY&t=285s Stream.generate() https://www.youtube.com/watch?v=RzEiCguFZiY&t=337s Stream.iterate() https://www.youtube.com/watch?v=RzEiCguFZiY&t=386s Stream.concat() Терминальные операции https://www.youtube.com/watch?v=RzEiCguFZiY&t=435s Stream.count() https://www.youtube.com/watch?v=RzEiCguFZiY&t=440s Stream.forEach() https://www.youtube.com/watch?v=RzEiCguFZiY&t=472s Collection.forEach() https://www.youtube.com/watch?v=RzEiCguFZiY&t=484s Stream.forEachOrdered() https://www.youtube.com/watch?v=RzEiCguFZiY&t=507s Stream.collect() https://www.youtube.com/watch?v=RzEiCguFZiY&t=531s Stream.toArray() https://www.youtube.com/watch?v=RzEiCguFZiY&t=536s Stream.collect(toMap()) https://www.youtube.com/watch?v=RzEiCguFZiY&t=580s IntStream.reduce() https://www.youtube.com/watch?v=RzEiCguFZiY&t=606s Stream.reduce() https://www.youtube.com/watch?v=RzEiCguFZiY&t=741s IntStream.average(), IntStream.max(), IntStream.min(), IntStream.sum(), IntStream.summaryStatictics() https://www.youtube.com/watch?v=RzEiCguFZiY&t=764s Stream.max(), Stream.min() https://www.youtube.com/watch?v=RzEiCguFZiY&t=789s Stream.findAny(), Stream.findFirst() https://www.youtube.com/watch?v=RzEiCguFZiY&t=815s Stream.noneMatch() https://www.youtube.com/watch?v=RzEiCguFZiY&t=842s Stream.anyMatch() https://www.youtube.com/watch?v=RzEiCguFZiY&t=853s Stream.allMatch() https://www.youtube.com/watch?v=RzEiCguFZiY&t=901s Трансформации стримов https://www.youtube.com/watch?v=RzEiCguFZiY&t=908s IntStream.mapToLong() https://www.youtube.com/watch?v=RzEiCguFZiY&t=919s IntStream.mapToObj() https://www.youtube.com/watch?v=RzEiCguFZiY&t=952s IntStream.distinct() https://www.youtube.com/watch?v=RzEiCguFZiY&t=968s Stream.filter() https://www.youtube.com/watch?v=RzEiCguFZiY&t=989s Stream.skip() https://www.youtube.com/watch?v=RzEiCguFZiY&t=994s Stream.limit() https://www.youtube.com/watch?v=RzEiCguFZiY&t=1046s Stream.sorted() https://www.youtube.com/watch?v=RzEiCguFZiY&t=1065s Stream.map() https://www.youtube.com/watch?v=RzEiCguFZiY&t=1081s Stream.peek() https://www.youtube.com/watch?v=RzEiCguFZiY&t=1126s Stream.takeWhile() https://www.youtube.com/watch?v=RzEiCguFZiY&t=1165s Stream.dropWhile() https://www.youtube.com/watch?v=RzEiCguFZiY&t=1280s Stream.flatMap() https://www.youtube.com/watch?v=RzEiCguFZiY&t=1429s Примеры использования ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ ➡ Твиттер: https://twitter.com/letsCodeDru ➡ Группа Вконтакте: https://vk.com/letscodedru ➡ Канал в Telegram: https://t.me/letsCode_dru ➡ Чат в Telegram: https://t.me/joinchat/FeiP9xEhqHajfqhLr4z-Nw ➡ Сервер в Discord: https://discord.gg/xs6XxSx ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ Поддержать проект: ➡ Patreon https://www.patreon.com/letscodedru ➡ Яндекс.Деньги https://money.yandex.ru/to/41001451675086 ➡ PayPal paypal.me/letscodedru ➡ Qiwi https://qiwi.me/letscode ➡ WebMoney/BitCoin https://funding.webmoney.ru/d/drucoder ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ ➡ Ссылка на канал: https://www.youtube.comhttps://www.youtube.com/channel/UC1g3kT0ZcSXt4_ZyJOshKJQ ➡ Ссылка на Яндекс.Дзен: https://zen.yandex.ru/media/id/5ac20956168a91ffeae449c5
