☕️ Скользящие окна в Stream без ручного буфера
☕️ Скользящие окна в Stream без ручного буфера Нужно сравнить соседние измерения или обработать последовательность небольшими перекрывающимися группами? В Java 24+ есть готовый gatherer. var windows = Stream.of(1, 2, 3, 4, 5) .gather(Gatherers.windowSliding(3)) .toList(); // [[1, 2, 3], [2, 3, 4], [3, 4, 5]] Каждое следующее окно теряет самый старый элемент и получает новый. Если вход короче размера окна, получится одно неполное окно; пустой Stream не выдаст ни одного. 🟡 Окна нельзя изменять. Большой размер окна может потреблять лишнюю память — это не бесплатная замена любого буфера. Gatherers стали стабильным API в Java 24. В докладе автора API есть примеры собственных преобразований и правила работы с параллельными потоками. 🔗 Источник • Разбор и примеры Java Библиотека | Мы в Телеграм