Последовательность из коллекции в Kotlin
У готовой коллекции есть asSequence: метод
не копирует элементы в новую структуру, а открывает
ленивый вид на те же данные. Дальше шаги пишут так
же, как у списка в цепочке преобразований.
Для списка строк можно поднять регистр каждой строки и в конце снова получить список:
fun main() {
val words = listOf("api", "log", "io")
val upper = words.asSequence()
.map { it.uppercase() }
.toList()
println(upper)
}
Тот же прием работает у множества. Порядок обхода зависит от типа коллекции, а отсортировать элементы можно уже внутри цепочки:
fun main() {
val ids = setOf(3, 1, 2)
val ordered = ids.asSequence()
.sorted()
.toList()
println(ordered)
}
Конечное toList материализует результат.
Исходный список или множество при этом не меняется -
меняется только новая коллекция, которую вернул
конец цепочки.
Дан список строк listOf("go", "rust", "kotlin").
Постройте последовательность, оставьте строки
длиннее трех символов и соберите их в список.
Выведите результат.
Дано множество setOf(5, 12, 8). Через
последовательность получите список четных чисел
в порядке возрастания. Выведите его.