收集
上的调用链。
每个 Collection
转换函数 (例如 map()
或 filter()
) 都会在后台创建一个新的
Collection
(通常是 List
或 Set
)。
多次后续调用以及 Collection
中存在大量项目的情况下,内存流量可能会很大。
这种情况下,最好使用序列
。
示例:
class Entity(val key: String, val value: String)
fun getValues(lines: List<String>) = lines
.filter { it.isNotEmpty() }
.map { it.split(',', limit = 2) }
.filter { it.size == 2 }
.map { Entity(it[0], it[1]) }
建议通过快速修复将调用链包到 asSequence()
和 toList()
中:
class Entity(val key: String, val value: String)
fun getValues(lines: List<String>) = lines
.asSequence()
.filter { it.isNotEmpty() }
.map { it.split(',', limit = 2) }
.filter { it.size == 2 }
.map { Entity(it[0], it[1]) }
.toList()