MST

星途 面试题库

面试题:Kotlin协程Flow流的中间操作符使用

请阐述Kotlin协程Flow中map、filter这两个中间操作符的作用,并举例说明如何在Flow流中使用它们对数据进行处理。
45.1万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试

map操作符

  1. 作用map操作符用于将流中的每个元素按照指定的变换函数进行转换,生成一个新的流,新流中的元素是原流元素经过变换后的结果。
  2. 示例
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.map

fun main() = runBlocking<Unit> {
    val numbersFlow: Flow<Int> = flow {
        emit(1)
        emit(2)
        emit(3)
    }
    val squaredFlow: Flow<Int> = numbersFlow.map { it * it }
    squaredFlow.collect { println(it) }
}

在上述示例中,numbersFlow流中的每个元素经过map操作符中的变换函数{ it * it },将原流中的数字转换为其平方,squaredFlow流输出的就是这些平方数。

filter操作符

  1. 作用filter操作符用于从流中过滤出满足指定条件的元素,生成一个新的流,新流只包含满足条件的元素。
  2. 示例
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.filter

fun main() = runBlocking<Unit> {
    val numbersFlow: Flow<Int> = flow {
        emit(1)
        emit(2)
        emit(3)
        emit(4)
    }
    val evenNumbersFlow: Flow<Int> = numbersFlow.filter { it % 2 == 0 }
    evenNumbersFlow.collect { println(it) }
}

在这个例子中,numbersFlow流中的元素经过filter操作符,通过条件it % 2 == 0过滤出偶数,evenNumbersFlow流只包含这些偶数。