返回

Kotlin 函数的集合操作高阶函数

Android

Kotlin 函数的集合操作高阶函数

在 Kotlin 中,集合操作高阶函数是一组用于对集合进行操作的函数,这些函数可以接受集合作为参数,并返回一个新的集合或对集合进行修改。

高阶函数是一个函数,可以接受另一个函数作为参数,或者返回另一个函数。

Kotlin 函数的集合操作高阶函数包括:

  • filter():过滤集合中的元素,只保留满足指定条件的元素。
  • filterIndexed():与 filter() 函数类似,但它还将元素的索引作为参数传递给 lambda 表达式。
  • map():将集合中的每个元素转换为另一个类型。
  • mapIndexed():与 map() 函数类似,但它还将元素的索引作为参数传递给 lambda 表达式。
  • forEach():对集合中的每个元素执行指定的动作。
  • forEachIndexed():与 forEach() 函数类似,但它还将元素的索引作为参数传递给 lambda 表达式。

filter() 函数

filter() 函数用于从集合中过滤元素,只保留满足指定条件的元素。

val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

val evenNumbers = numbers.filter { it % 2 == 0 }

println(evenNumbers) // [2, 4, 6, 8, 10]

上面的代码中,我们使用 filter() 函数从 numbers 集合中过滤出所有偶数,并将其存储在 evenNumbers 变量中。

filterIndexed() 函数

filterIndexed() 函数与 filter() 函数类似,但它还将元素的索引作为参数传递给 lambda 表达式。

val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

val evenNumbers = numbers.filterIndexed { index, number ->
    index % 2 == 0 && number % 2 == 0
}

println(evenNumbers) // [2, 6, 10]

上面的代码中,我们使用 filterIndexed() 函数从 numbers 集合中过滤出所有偶数,并且索引也是偶数的元素,并将其存储在 evenNumbers 变量中。

map() 函数

map() 函数用于将集合中的每个元素转换为另一个类型。

val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

val squaredNumbers = numbers.map { it * it }

println(squaredNumbers) // [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

上面的代码中,我们使用 map() 函数将 numbers 集合中的每个元素平方,并将其存储在 squaredNumbers 变量中。

mapIndexed() 函数

mapIndexed() 函数与 map() 函数类似,但它还将元素的索引作为参数传递给 lambda 表达式。

val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

val squaredNumbers = numbers.mapIndexed { index, number ->
    "$index: ${number * number}"
}

println(squaredNumbers) // [0: 1, 1: 4, 2: 9, 3: 16, 4: 25, 5: 36, 6: 49, 7: 64, 8: 81, 9: 100]

上面的代码中,我们使用 mapIndexed() 函数将 numbers 集合中的每个元素平方,并且将元素的索引作为前缀添加到字符串中,并将其存储在 squaredNumbers 变量中。

forEach() 函数

forEach() 函数用于对集合中的每个元素执行指定的动作。

val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

numbers.forEach { println(it) }

// 输出:
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
// 10

上面的代码中,我们使用 forEach() 函数对 numbers 集合中的每个元素执行 println() 操作,这将把每个元素打印到控制台。

forEachIndexed() 函数

forEachIndexed() 函数与 forEach() 函数类似,但它还将元素的索引作为参数传递给 lambda 表达式。

val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

numbers.forEachIndexed { index, number ->
    println("$index: $number")
}

// 输出:
// 0: 1
// 1: 2
// 2: 3
// 3: 4
// 4: 5
// 5: 6
// 6: 7
// 7: 8
// 8: 9
// 9: 10

上面的代码中,我们使用 forEachIndexed() 函数对 numbers 集合中的每个元素执行 println() 操作,并且将元素的索引作为前缀添加到字符串中,这将把每个元素及其索引打印到控制台。

总结

Kotlin 函数的集合操作高阶函数是一个强大的工具,可以帮助我们轻松地处理集合。这些函数可以用于过滤集合中的元素、将集合中的元素转换为另一个类型、对集合中的每个元素执行指定的动作等。