TGViewer
Чашечка Java Чашечка Java @a_cup_of_java · 8.38K subscribers
Post #7954 1.21K
Stream Gatherers: кастомные промежуточные операции для Stream API

Привет, Хабр!

Когда Java 8 впервые подарила нам Stream API, мы все обрадовались ленивому функциональному стилю работы с коллекциями. Но хочется иногда большего. Вот, например, задача – пропустить из потока только по одному элементу каждого размера строки. Или разбить бесконечный стрим на окна фиксированного размера и обработать первые несколько таких окон. Казалось бы, чем проще: .filter, .map, .distinct… Но именно этих операций не хватало. До Java 24 набор промежуточных операций в Stream был фиксированным – map, filter, flatMap, distinct, sorted и т.д. – и расширить его было нельзя. Приходилось придумывать сложные ухищрения (например, оборачивать объекты в record с особым equals или собирать через collect, а потом резать список), чтобы решить элементарные задачи. В итоге код становился громоздким и неинтуитивным.


Читать: https://habr.com/ru/companies/otus/articles/940320/?utm_campaign=940320

@a_cup_of_java | Другие наши каналы
More from @a_cup_of_java
  1. Sep 26, 2026Gradle 9.5.1 в одноразовом CI: сокращаем запуск сборки В свежем CI-контейнере нет состояни…
  2. Sep 26, 2026Vaadin и Spring: как собрать интерактивный Java-интерфейс Во второй части проекта NeuroWat…
  3. Sep 25, 2026HotSpot: как задачи JIT задерживают выгрузку ClassLoader JIT создаёт для горячего метода з…
  4. Sep 25, 2026Как ускорить агрегацию в Spring Batch с помощью DuckDB В Spring Batch агрегацию миллионов…
  5. Sep 25, 2026Как перевести сборку Gradle на Isolated Projects Isolated Projects параллельно конфигуриру…
  6. Sep 24, 2026Как перенести Spring Boot 3.5 на 4.1 и не пропустить тихие поломки Поддержка Spring Boot 3…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →