kotlin - 在Kotlin中使用Sequence时如何处理掉入过滤器的元素

标签 kotlin

我想过滤一个列表并记录通过过滤器的项目,类似于此:

val evenNumbers = (1..10)
            .filter { it % 2 == 0 }
            .onFallThrough { println("dropped $it") }  // wishful Kotlin
            .toList()

然后,这将导致以下输出:
dropped 1
dropped 3
dropped 5
dropped 7
dropped 9

以及列表evenNumbers中收集的所有偶数。

浏览Sequences的手册页时,我找不到任何可以执行此操作的东西。 Kotlin是否有办法实现这一目标?

最佳答案

我会使用 partition :

val evenNumbers = (1..10)
    .partition { it % 2 == 0 }
    .let {
        println("dropped ${it.second}")
        it.first
    }

它返回一个Pair,其first属性包含与条件匹配的所有元素,其second属性包含与条件不匹配的元素。

关于kotlin - 在Kotlin中使用Sequence时如何处理掉入过滤器的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55456415/

相关文章:

android - 用于应用程序和单元测试的独立 Android Gradle Jvm 版本

android - 由 : java. lang.AssertionError 引起:无法删除缓存目录 yourProject\build\kotlin\compileDebugTestingKotlin

kotlin - TornadoFX 加载多个 FXML 文件

functional-programming - 使用函数式编程计算每个标签的出现次数

kotlin - 如何在没有 NoSuchMethodError 的 Kotlin 1.4 的 Gradle 构建中使用新定义的委托(delegate)属性?

android - 在 View 被销毁后从另一个线程访问 AutoClearedValue

android - Kotlin:带实时数据的协程还是只有协程?

java - 如何使用 Spring Boot 从 application.yml 读取变量并在 kotlin 测试中使用它

kotlin - 如何从Kotlin中相同大小的MutableList <MutableList <Boolean >>创建MutableList <MutableList <Int >>

Kotlin 类型自动装箱 vs 原始类型