Какие виды оператора map ты знаешь в RxJava?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Оператор map в RxJava имеет несколько разновидностей, отличающихся своей функциональностью при преобразовании данных.
Основные виды оператора map:
-
map: Преобразует каждый элемент исходной последовательности в другой элемент с помощью заданной функции.// Преобразует числа в их строковые представления Observable<Integer> source = Observable.just(1, 2, 3); Observable<String> result = source.map(i -> String.valueOf(i)); -
flatMap: Преобразует каждый элемент исходной последовательности в новый ObservableSource, а затем "сглаживает" (сливает) все эти ObservableSource в одну выходную последовательность. Порядок элементов может быть не сохранен.// Преобразует число в Observable другого числа Observable<Integer> source = Observable.just(1, 2, 3); Observable<Integer> result = source.flatMap(i -> Observable.just(i * 10)); -
concatMap: Похож наflatMap, но гарантирует, что ObservableSource, созданные из элементов исходной последовательности, будут излучаться последовательно, сохраняя порядок исходных элементов.// Последовательно преобразует число в Observable другого числа Observable<Integer> source = Observable.just(1, 2, 3); Observable<Integer> result = source.concatMap(i -> Observable.just(i * 10)); -
switchMap: Преобразует каждый элемент исходной последовательности в новый ObservableSource. При появлении нового элемента из исходной последовательности, оператор отписывается от предыдущего ObservableSource и подписывается на новый. Излучает элементы только из самого "свежего" ObservableSource.// При получении нового числа отписывается от предыдущего Observable и подписывается на новый Observable<Integer> source = Observable.just(1, 2, 3); Observable<Integer> result = source.switchMap(i -> Observable.just(i * 10).delay(100, TimeUnit.MILLISECONDS)); // Добавляем задержку для демонстрации -
mapNotNull(в Kotlin): Специальный оператор, доступный при использовании RxKotlin. Функционально похож наmap, но автоматически отфильтровывает любыеnullзначения, возвращаемые функцией преобразования.// В Kotlin, отфильтровывает null значения val source = io.reactivex.Observable.just(1, 2, null, 4) val result = source.mapNotNull { it?.toString() }
Эти операторы предоставляют мощные инструменты для преобразования данных в зависимости от требуемого поведения и управления потоками.