常用高阶函数:map、filter、forEach、reduce
1. map:转换集合元素
map 函数用于对集合中的每个元素进行转换,并返回一个新的集合(通常是 List)。
语法:
val result = collection.map { element -> transform(element) }
示例:
val numbers = listOf(1, 2, 3)
val squared = numbers.map { it * it } // [1, 4, 9]
2. filter:过滤集合元素
filter 函数根据条件筛选集合中的元素,返回满足条件的元素组成的新集合。
语法:
val result = collection.filter { element -> condition }
示例:
val numbers = listOf(1, 2, 3, 4)
val evens = numbers.filter { it % 2 == 0 } // [2, 4]
3. forEach:遍历集合元素
forEach 用于遍历集合中的每个元素并执行操作(无返回值)。
语法:
collection.forEach { element -> action(element) }
示例:
listOf("A", "B", "C").forEach { println(it) }
// 输出:
// A
// B
// C
4. reduce:累积计算结果
reduce 将集合中的元素按顺序累积计算,最终返回一个单一结果。
语法:
val result = collection.reduce { acc, element -> operation(acc, element) }
示例:
val numbers = listOf(1, 2, 3, 4)
val sum = numbers.reduce { acc, num -> acc + num } // 10
组合使用示例
高阶函数可以链式调用,实现复杂的数据处理逻辑:
val result = listOf(1, 2, 3, 4, 5)
.filter { it % 2 == 1 } // 保留奇数 [1, 3, 5]
.map { it * 2 } // 每个元素乘以 2 [2, 6, 10]
.reduce { acc, i -> acc + i } // 累加结果:18
注意事项
- 性能考虑:链式调用会创建中间集合,对大数据集建议使用
Sequence(见第 11 章)。 - 空安全:若集合可能为空,使用
reduceOrNull替代reduce。 - 纯函数:Lambda 中避免副作用(如修改外部变量),保持函数式编程的纯粹性。
