JavaRush
Акция
Университет
Java FullStack
Python FullStack
new
Web FullStack
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), генерация потоков (iterate, generate)

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

    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 и др.), практические примеры, мермаид-схема и частые ошибки при использовании параллельных стримов.
    Открыта
  • 1
  • ...
  • 14
  • 15
  • 16
  • 17
  • 18
  • ...
  • 57
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2025 JavaRush
MastercardVisa
"Программистами не рождаются" © 2025 JavaRush