Что использовать, если надо преобразовать внутри одного потока данных данные из одного типа в другой

«Что использовать, если надо преобразовать внутри одного потока данных данные из одного типа в другой» — вопрос из категории Coroutines и Flow, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для преобразования данных внутри одного потока используйте оператор map() из Kotlin Flow или RxJava.

Kotlin Flow:

flowOf(1, 2, 3)
    .map { it.toString() } // Int → String
    .collect { println(it) }

RxJava:

Observable.just(1, 2, 3)
    .map { it.toString() } // Int → String
    .subscribe { println(it) }

Особенности:

  • Работает синхронно, если преобразование быстрое.
  • Для тяжелых операций используйте flowOn() (Flow) или subscribeOn() (RxJava).
  • Не блокирует поток, если операция не CPU-intensive.