¿Cuál es la mejor alternativa en Kotlin a java.util.stream.Stream<>.peek(...)?
Parece que no hay operaciones intermedias alternativas:
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.streams/index.html
Encontré solo la terminación para cada uno (...)
La alternativa de Stream en Kotlin esSequences .
listOf(1, 2, 3, 4, 5) .asSequence() .filter { it < 3 } .onEach { println("filtered $it") } .map { it * 10 } .forEach { println("final: $it") } Hay onEach para hacer lo que hace peek .
Dato curioso: Kotlin también quería llamar a sus secuencias "Streams" antes de que quedara claro que Java haría lo mismo, por lo que le cambiaron el nombre a "Sequences".
En primer lugar, a diferencia de Java en Kotlin, puede realizar un procesamiento de secuencias (operaciones de mapa/reducción) en cualquier tipo de colección, por ejemplo:
val list = ArrayList<Int>() list.forEach { } list.onEach { } Sin embargo, las operaciones definidas de esta manera no se evalúan de forma perezosa y si necesitamos una evaluación perezosa aplicando el método .asSequence() y generando una secuencia desde la colección.
Finalmente, para responder a su pregunta onEach() es el equivalente de peek()