Ограничение длины в Kotlin
Шаг take обрезает последовательность после
заданного числа элементов. Дальнейшие шаги видят
уже укороченный поток, даже если исходных данных
было больше.
На списке чисел отберем четные, возьмем первые два и соберем результат:
fun main() {
val nums = listOf(2, 4, 6, 8, 10, 12)
val part = nums.asSequence()
.filter { it % 2 == 0 }
.take(2)
.toList()
println(part)
}
Функция take можно поставить и сразу после
asSequence, если нужны первые элементы
без предварительного отбора:
fun main() {
val nums = listOf(30, 10, 40, 20, 50)
val head = nums.asSequence()
.take(3)
.map { it / 10 }
.toList()
println(head)
}
Во втором примере map выполнится только
для трех первых чисел исходного списка. Ограничение
длины часто ставят перед тяжелым шагом, чтобы не
обрабатывать лишние элементы.
Дан список listOf(1, 2, 3, 4, 5, 6).
Через последовательность возьмите первые четыре
числа, оставьте только нечетные и выведите список.
Для списка listOf("a", "bb", "ccc", "dddd")
постройте цепочку с отбором строк длиннее одного
символа, затем ограничьте длину двумя элементами
и выведите их в верхнем регистре одним списком.