Привет, Хабр!
Когда 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 | Другие наши каналы