Что выведет код Senior Коллекции и последовательности обновлено
Порядок вызовов в Sequence и в List
Вопрос
Что выведет код? По строке на каждый вывод.
fun main() {
val log = mutableListOf<String>()
listOf(1, 2, 3)
.map { log.add("m$it"); it * 10 }
.filter { log.add("f$it"); it > 10 }
println(log.joinToString(" "))
log.clear()
sequenceOf(1, 2, 3)
.map { log.add("m$it"); it * 10 }
.filter { log.add("f$it"); it > 10 }
.first()
println(log.joinToString(" "))
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: m1 m2 m3 f10 f20 f30, m1 f10 m2 f20. Для списка каждая операция проходит всю коллекцию: сначала три map, потом три filter.
Что выведет
m1 m2 m3 f10 f20 f30
m1 f10 m2 f20
Разбор
Для списка каждая операция проходит всю коллекцию: сначала три map, потом три filter. Для последовательности элемент проходит цепочку целиком: 1 отображается в 10 и не проходит фильтр, 2 отображается в 20 и проходит, first() останавливает обработку, третий элемент вообще не тронут.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.