[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-reactive-kakie-est-operatory-v-project-reactor-i-dlya-chego-oni-ispolzuyutsya":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},993,"kakie-est-operatory-v-project-reactor-i-dlya-chego-oni-ispolzuyutsya",31,"reactive","Reactive","⚡","Какие есть операторы в Project Reactor и для чего они используются?","Операторы в Project Reactor — функции для создания, преобразования, фильтрации и объединения реактивных потоков данных.\n\n### Операторы создания\n\n| Оператор | Описание |\n|----------|----------|\n| `just` | Создаёт Flux\u002FMono из указанных элементов |\n| `fromArray` \u002F `fromIterable` \u002F `fromStream` | Создаёт поток из массива, итерируемого объекта или Stream |\n| `fromCallable` \u002F `fromRunnable` \u002F `fromSupplier` | Создаёт Mono из Callable, Runnable или Supplier |\n| `range` | Создаёт Flux из диапазона целых чисел |\n| `interval` | Создаёт Flux, эмитирующий long через регулярные промежутки |\n| `empty` \u002F `error` \u002F `never` | Пустой поток \u002F поток с ошибкой \u002F поток без сигналов |\n| `defer` | Создаёт новый Flux\u002FMono для каждой подписки |\n\n### Операторы трансформации\n\n| Оператор | Описание |\n|----------|----------|\n| `map` | Синхронное преобразование каждого элемента |\n| `flatMap` | Преобразует элемент в поток и объединяет результаты (без гарантии порядка) |\n| `concatMap` | Как flatMap, но с сохранением порядка |\n| `switchMap` | Отписывается от предыдущего потока при получении нового |\n| `scan` | Накапливает состояние для каждого элемента |\n| `buffer` | Собирает элементы в списки внутри Flux |\n| `window` | Публикует коллекции элементов как вложенный Flux |\n| `groupBy` | Группирует элементы по ключу |\n\n### Операторы фильтрации\n\n| Оператор | Описание |\n|----------|----------|\n| `filter` | Пропускает элементы, удовлетворяющие условию |\n| `distinct` | Пропускает только уникальные элементы |\n| `take` \u002F `takeWhile` \u002F `takeUntil` | Ограничивает поток по количеству или условию |\n| `skip` \u002F `skipWhile` \u002F `skipUntil` | Пропускает элементы по количеству или условию |\n\n### Операторы объединения\n\n| Оператор | Описание |\n|----------|----------|\n| `merge` | Объединяет потоки параллельно (активная подписка) |\n| `concat` | Объединяет потоки последовательно (отложенная подписка) |\n| `zip` | Объединяет элементы из нескольких потоков в пары |\n| `combineLatest` | Объединяет последние значения из нескольких потоков |\n| `startWith` | Добавляет элементы в начало потока |\n\n> **На собеседовании:** достаточно знать основные операторы каждой группы и уметь объяснить разницу map vs flatMap, merge vs concat, take vs takeWhile. Частая ошибка — путать map (синхронный, 1:1) и flatMap (асинхронный, 1:N).","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":19,"keywords":20,"schemaAnswer":19,"featuredSnippetReady":21},"Какие есть операторы в Project Reactor и для чего они исполь — Gymterview","Операторы в Project Reactor — функции для создания, преобразования, фильтрации и объединения реактивных потоков данных.",[7,13],true]