【问题标题】:Terminal operator for Kotlin sequence that discard the output?丢弃输出的 Kotlin 序列的终端运算符?
【发布时间】:2021-09-13 22:05:59
【问题描述】:

我正在对非常大的 Kotlin 序列进行操作,我在序列的每一步都执行我的逻辑,我永远不需要将整个序列保存在内存中。

目前我的代码是这样的

hugeSequence
    .filter { ... } 
    .map {...... }
    .onEach {
        callExpensiveOperation(it)
    }
    .toList()  <- this feels wrong

底部的toList()terminal 运算符,但我担心Kotlin 可能会尝试在内存中创建一个巨大的列表,然后才意识到我什至没有分配该操作的结果值。

我可以使用其他终端操作符来触发序列开始吗?

【问题讨论】:

    标签: kotlin sequence


    【解决方案1】:

    使用forEach 代替onEach。它是onEach 的终端等价物。

    hugeSequence
        .filter { ... } 
        .map {...... }
        .forEach {
            callExpensiveOperation(it)
        }
    

    【讨论】:

      猜你喜欢
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      • 2012-09-09
      • 2013-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多