Kotlin 函数的集合操作高阶函数
2023-10-02 20:54:06
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 函数的集合操作高阶函数是一个强大的工具,可以帮助我们轻松地处理集合。这些函数可以用于过滤集合中的元素、将集合中的元素转换为另一个类型、对集合中的每个元素执行指定的动作等。