Конечное действие в Kotlin
Конечное действие - команда в конце цепочки, которой нужен конкретный ответ: список, число, один элемент. Именно она запускает реальный обход данных, описанных промежуточными шагами.
Один и тот же отбор можно завершить сбором списка или подсчетом длины:
fun main() {
val nums = listOf(3, 8, 1, 12, 5)
val picked = nums.asSequence()
.filter { it > 4 }
.toList()
val amount = nums.asSequence()
.filter { it > 4 }
.count()
println(picked)
println(amount)
}
Функция toList материализует элементы, count
считает их без сохранения всего набора в память.
Обе команды идут по одной и той же цепочке отбора.
Другие частые конечные шаги - взять первый элемент или сложить числа:
fun main() {
val nums = listOf(3, 8, 1, 12, 5)
val top = nums.asSequence()
.filter { it > 4 }
.first()
val total = nums.asSequence()
.filter { it > 4 }
.sum()
println(top)
println(total)
}
Функция first останавливает обход, как только
найден подходящий элемент. Функция sum проходит
все отобранные значения и накапливает итог.
Дан список listOf(10, 2, 7, 15, 4).
Через последовательность оставьте числа не
меньше семи. Выведите список отобранных значений
и их количество двумя конечными командами.
Для списка listOf(1, 9, 3, 6, 11)
постройте цепочку с отбором больше пяти.
Выведите первый подходящий элемент и сумму всех
подходящих.