Выбор ответа Senior Коллекции и последовательности обновлено

Порядок выполнения операций в Sequence

Вопрос

Сколько раз будет вызвана лямбда в map?

val r = listOf(1, 2, 3, 4, 5, 6).asSequence()
    .map { it * 2 }
    .filter { it > 3 }
    .first()

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 2. Последовательность обрабатывает элементы по одному через всю цепочку.

Варианты ответа

  1. 2правильный ответ
  2. 1
  3. 3
  4. 6

Разбор

Последовательность обрабатывает элементы по одному через всю цепочку. Элемент 1: map даёт 2, filter отбрасывает (не больше 3). Элемент 2: map даёт 4, filter пропускает, first() получает результат и обработка останавливается. map вызвался 2 раза. Для обычного списка map прошёл бы все 6 элементов до начала filter.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.