丢弃输出的 Kotlin 序列的终端运算符?
Terminal operator for Kotlin sequence that discard the output?
我在非常大的 Kotlin 序列上运行,我在序列的每一步上执行我的逻辑,我从不需要将整个序列保存在内存中。
目前我的代码是这样的
hugeSequence
.filter { ... }
.map {...... }
.onEach {
callExpensiveOperation(it)
}
.toList() <- this feels wrong
底部的 toList()
是 terminal
运算符,但我担心 Kotlin 可能会尝试在内存中创建一个巨大的列表,然后才意识到我什至没有分配该操作的结果值。
是否有任何其他终端操作员可以用来触发序列开始?
使用 forEach
而不是 onEach
。它是 onEach
.
的终端等价物
hugeSequence
.filter { ... }
.map {...... }
.forEach {
callExpensiveOperation(it)
}
我在非常大的 Kotlin 序列上运行,我在序列的每一步上执行我的逻辑,我从不需要将整个序列保存在内存中。
目前我的代码是这样的
hugeSequence
.filter { ... }
.map {...... }
.onEach {
callExpensiveOperation(it)
}
.toList() <- this feels wrong
底部的 toList()
是 terminal
运算符,但我担心 Kotlin 可能会尝试在内存中创建一个巨大的列表,然后才意识到我什至没有分配该操作的结果值。
是否有任何其他终端操作员可以用来触发序列开始?
使用 forEach
而不是 onEach
。它是 onEach
.
hugeSequence
.filter { ... }
.map {...... }
.forEach {
callExpensiveOperation(it)
}