JavaRush
Акція
Університет
Java FullStack
Python FullStack
AI Native Developer
new
Навчання
Курси
Задачі
Опитування
Ігри
Допомога
Графік стусанів
Стажування
Спільнота
Користувачі
Форум
Чат
Статті
Історії успіху
Дії
Відгуки
Передплати
Світла тема

Лекції

  • Відгуки
  • Про нас
  • CS50
Почати
Почати навчання
Почати навчання
  • Моє навчання
  • Курси
  • Університет
  • Карта квестів
  • Лекції
  • Методи groupingBy та partitioningBy (Collectors)

    JAVA 25 SELF
    31 рівень, 2 лекція
    У цій лекції ви навчитеся групувати дані у потоках за допомогою колекторів Collectors.groupingBy і Collectors.partitioningBy: прості та вкладені групування, поділ за булевою ознакою, вибір між ними, обробка результату та корисні поради. На практичних прикладах із рядками, числами й об’єктами побачите, як із потоку ( Stream API) отримати Map потрібної структури й як працювати з функціями‑ознаками ( Function) та предикатами ( Predicate). Наприкінці — розбір типових помилок.
    Відкрита
  • Поглиблена агрегація: вкладені групування

    JAVA 25 SELF
    31 рівень, 3 лекція
    Практичне занурення у вкладені групування зі Stream-ами та колекторами: як комбінувати Collectors.groupingBy з агрегаторами ( maxBy, averagingInt, counting), трансформувати дані за допомогою mapping, ділити на підмножини через partitioningBy та коректно читати вкладені Map-структури. Багато наочних прикладів, візуалізація структури результатів і розбір типових помилок.
    Відкрита
  • Просунуті колектори

    JAVA 25 SELF
    31 рівень, 4 лекція
    У лекції розглядаємо просунуті прийоми роботи з колекторами Stream API: вкладені downstream‑колектори для groupingBy/ partitioningBy, перетворення з mapping, фільтрацію з filtering, «розгортання» з flatMapping, одночасну агрегацію з teeing (Java 12+), а також «заморожування» колекцій через toUnmodifiableList/Set/Map і collectingAndThen. Покажемо практичні конвеєри та типові помилки.
    Відкрита
  • Методи flatMap і mapMulti

    JAVA 25 SELF
    32 рівень, 0 лекція
    У цій лекції розберемося, чим відрізняються перетворення даних через map, «сплющувальне» перетворення через flatMap і ефективніший аналог у Java 16+ — mapMulti. На прикладах побачимо, як розпаковувати вкладені колекції до вигляду Stream<String> замість Stream<Stream<String>>, як працювати з Optional за допомогою stream(), а також коли надавати перевагу mapMulti заради продуктивності без створення проміжних потоків.
    Відкрита
  • Методи join, concat: обʼєднання потоків

    JAVA 25 SELF
    32 рівень, 1 лекція
    У цій лекції розглянемо способи обʼєднання даних у Stream API: статичний метод Stream.concat для двох потоків, комбінацію Stream.of + flatMap для довільної кількості потоків, а також колектор Collectors.joining для склеювання елементів в один рядок. Поговоримо про ледачість, одноразовість потоків, збереження порядку й типові помилки (повторне використання потоку, нескінченні потоки, joining для нерядкових елементів) — з наочними прикладами.
    Відкрита
  • Операції union, intersection, difference

    JAVA 25 SELF
    32 рівень, 2 лекція
    У цій лекції розглянемо типові операції над множинами в Java: обʼєднання ( union), перетин ( intersection) і різницю ( difference) на основі інтерфейсу Set та Stream API. Наведено практичні приклади зі Stream.concat, Stream.of + flatMap, альтернативи через retainAll/ removeAll, а також важливі нюанси щодо equals/ hashCode, продуктивності та типових помилок.
    Відкрита
  • Zip-ування (zip), генерація потоків (iterate, generate)

    JAVA 25 SELF
    32 рівень, 3 лекція
    У лекції розберемося, що таке zip і чому його немає у стандартному Stream API (до Java 22), навчимося «зшивати» колекції через індекси за допомогою IntStream.range, а також створювати потоки «на льоту» за допомогою Stream.iterate і Stream.generate. Приклади, візуалізації та типові помилки допоможуть упевнено застосовувати генерацію та zip-ування у задачах.
    Відкрита
  • Розбір типових помилок під час роботи зі Stream API

    JAVA 25 SELF
    32 рівень, 4 лекція
    Детальний гід щодо частих помилок під час роботи зі Stream API у Java: одноразовість потоку та повторні виклики термінальних операцій ( collect(), forEach(), count()), зміна колекції під час обходу, забутий limit() у нескінченних потоках ( iterate, generate), обробка null та робота з Optional через flatMap(Optional::stream), збереження порядку з forEachOrdered(), ефективні операції над множинами за допомогою Set, коректне закриття ресурсів ( Files.lines + try-with-resources), обережність із parallelStream() та принцип «поки немає термінального оператора — нічого не виконується». Усі проблеми супроводжуються зрозумілими прикладами та виправленнями.
    Відкрита
  • Примітивні стріми та вартість упакування (boxing)

    JAVA 25 SELF
    33 рівень, 0 лекція
    У лекції розберемо, чому звичайні стріми колекцій чисел ( Stream<Integer>, Stream<Double>) можуть бути неефективними через упакування/розпакування (boxing/unboxing), і як примітивні стріми — IntStream, LongStream, DoubleStream — допомагають цього уникнути. Розглянемо перетворення mapToInt/ boxed(), агрегаційні операції ( sum(), average(), summaryStatistics()), безпечні результати з OptionalInt/ OptionalDouble, а також де оптимізація справді дає приріст і як вимірювати ефект із JMH.
    Відкрита
  • Ледача обробка (lazy evaluation) у Stream API

    JAVA 25 SELF
    33 рівень, 1 лекція
    У лекції розглянемо, як працює ледача обробка у Stream API: чим відрізняються проміжні та термінальні операції, чому обчислення починаються лише після виклику термінальної операції, а також які переваги дають поелементна обробка та «короткі обчислення». Покажемо ланцюжки з filter, map, peek, findFirst, forEach, візуалізуємо проходження елементів і розберемо типові помилки й поради щодо ефективного порядку операцій.
    Відкрита
  • Незмінні колекції: Collections.unmodifiable

    JAVA 25 SELF
    33 рівень, 2 лекція
    У цій лекції розглянемо, як захистити дані за допомогою незмінних обгорток Collections.unmodifiableList, unmodifiableSet, unmodifiableMap, чим відрізняється «поверхнева» незмінність від «глибокої», коли й навіщо повертати обгортки з методів, а також сучасні альтернативи List.of/ Set.of/ Map.of. Поговоримо про типові помилки (наприклад, очікування глибокої незмінності або робота з null) та про те, чому спроби модифікації завершуються винятком UnsupportedOperationException.
    Відкрита
  • Spliterator і паралельні стріми

    JAVA 25 SELF
    33 рівень, 3 лекція
    У лекції розглядаємо, що таке Spliterator і як він дає змогу не лише перебирати елементи, а й ділити джерело даних на частини за допомогою trySplit(). Пояснюємо, як на цій основі працюють паралельні стріми через parallelStream() і спільний пул ForkJoinPool. Показуємо ключові методи ( tryAdvance, estimateSize, characteristics), типові характеристики ( ORDERED, SIZED, CONCURRENT тощо), практичні приклади, схема Mermaid і поширені помилки під час використання паралельних стрімів.
    Відкрита
  • 1
  • ...
  • 14
  • 15
  • 16
  • 17
  • 18
  • ...
  • 57
Навчання
  • Курси програмування
  • Реєстрація
  • Курс Java
  • Допомога із задачами
  • Ціни
Спільнота
  • Користувачі
  • Статті
  • Форум
  • Чат
  • Історії успіху
  • Дії
Компанія
  • Про нас
  • Контакти
  • Відгуки
  • FAQ
  • Підтримка
JavaRush JavaRush — це інтерактивний онлайн-курс вивчення Java-програмування з нуля. Він містить 1200 практичних задач із перевіркою розв'язання одним клацанням, необхідний мінімум знань із теоретичних основ Java, а ще мотивувальні «фішки», які допоможуть пройти курс до кінця: ігри, опитування, цікаві проєкти й статті про ефективне навчання та кар'єру Java‑девелопера.
Підписуйтесь
Мова інтерфейсу
Русский English
Українська
Програмістами не народжуються © 2026 JavaRush
MastercardVisa
Програмістами не народжуються © 2026 JavaRush