Как преобразовать java.util.stream.Stream <Something> в kotlin.Sequence <Something>

Java 8 Streams являются мощными, но когда parallelism не нужен, последовательность Котлина кажется более простой в использовании.

Есть ли способ конвертировать stream.sequencial() в последовательность?

Ответ 1

Вы можете получить итератор из потока, а затем обернуть итератор в последовательность:

Sequence { stream.iterator() }

Ответ 2

У Kotlin есть метод расширения asSequence() для преобразования потока Java в последовательность Kotlin. По моему опыту, это было невозможно обнаружить, пока я не добавил оператор импорта:

import kotlin.streams.*

Затем просто используйте, как ожидалось:

val seq = stream.asSequence()