Новое Распределяем каналы MAX по категориям и территориям. Читать новость

☕️ Скользящие окна в 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 Библиотека | Мы в Телеграм
Просмотры: 144
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти