Операторы в Project Reactor — функции для создания, преобразования, фильтрации и объединения реактивных потоков данных.
Операторы создания
| Оператор |
Описание |
just |
Создаёт Flux/Mono из указанных элементов |
fromArray / fromIterable / fromStream |
Создаёт поток из массива, итерируемого объекта или Stream |
fromCallable / fromRunnable / fromSupplier |
Создаёт Mono из Callable, Runnable или Supplier |
range |
Создаёт Flux из диапазона целых чисел |
interval |
Создаёт Flux, эмитирующий long через регулярные промежутки |
empty / error / never |
Пустой поток / поток с ошибкой / поток без сигналов |
defer |
Создаёт новый Flux/Mono для каждой подписки |
Операторы трансформации
| Оператор |
Описание |
map |
Синхронное преобразование каждого элемента |
flatMap |
Преобразует элемент в поток и объединяет результаты (без гарантии порядка) |
concatMap |
Как flatMap, но с сохранением порядка |
switchMap |
Отписывается от предыдущего потока при получении нового |
scan |
Накапливает состояние для каждого элемента |
buffer |
Собирает элементы в списки внутри Flux |
window |
Публикует коллекции элементов как вложенный Flux |
groupBy |
Группирует элементы по ключу |
Операторы фильтрации
| Оператор |
Описание |
filter |
Пропускает элементы, удовлетворяющие условию |
distinct |
Пропускает только уникальные элементы |
take / takeWhile / takeUntil |
Ограничивает поток по количеству или условию |
skip / skipWhile / skipUntil |
Пропускает элементы по количеству или условию |
Операторы объединения
| Оператор |
Описание |
merge |
Объединяет потоки параллельно (активная подписка) |
concat |
Объединяет потоки последовательно (отложенная подписка) |
zip |
Объединяет элементы из нескольких потоков в пары |
combineLatest |
Объединяет последние значения из нескольких потоков |
startWith |
Добавляет элементы в начало потока |
На собеседовании: достаточно знать основные операторы каждой группы и уметь объяснить разницу map vs flatMap, merge vs concat, take vs takeWhile. Частая ошибка — путать map (синхронный, 1:1) и flatMap (асинхронный, 1:N).