Kotlin是否存在遍历集合元素后返回原集合的类forEach内置方法
回答
Kotlin标准库已经提供了完全匹配你需求的内置扩展方法:onEach。
它的行为和你自行实现的逻辑完全一致:
- 遍历接收者集合内的每一个元素,执行传入的操作逻辑
- 操作执行完成后返回原集合本身,不会生成新集合
- 相比你自定义实现返回
Iterable<T>的设计,标准库的onEach会保留原集合的具体类型,不会在链式调用中丢失类型信息,比如在MutableList上调用onEach,返回值依然是MutableList类型,使用更灵活。
和返回Unit、属于终端操作的forEach不同,onEach是专门为链式调用设计的中间操作,非常适合在流式处理集合的过程中插入副作用逻辑,比如调试打印元素值、触发和元素关联的次要业务逻辑等。
简单使用示例:
fun main() { val numberList = mutableListOf(1, 2, 3, 4) val result = numberList .onEach { println("当前遍历到元素:$it") } // 遍历打印,不打断后续链式处理 .filter { it % 2 == 0 } .map { it * 10 } println(result) // 输出 [20, 40] }
补充说明:onEach的适配范围不止通用Iterable类型,标准库同时为Sequence、各类对象数组、原生类型数组(IntArray/LongArray等)、Map都提供了对应的扩展实现,所有常用容器类型都可以直接使用这个方法。需要注意的是,在Sequence上调用onEach时,操作是惰性的,只有当序列被终端操作触发求值时,传入的逻辑才会真正执行。
内容的提问来源于stack exchange,提问作者Anthone
相关产品推荐
相关产品推荐

