НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
195 of 1310 menu

Интерфейс Sequence

Интерфейс Sequence представляет последовательность элементов, которая обрабатывается лениво (lazy evaluation). В отличие от коллекций, операции над последовательностью выполняются только когда требуется результат, и обрабатываются поэлементно без создания промежуточных коллекций. Это особенно полезно для больших наборов данных или цепочек преобразований.

Импорт

import kotlin.sequences.Sequence

Синтаксис

interface Sequence<out T>

Создание последовательности

Создать последовательность можно несколькими способами:

val seq1 = sequenceOf(1, 2, 3, 4, 5) val seq2 = listOf(1, 2, 3, 4, 5).asSequence() val seq3 = generateSequence(1) { it + 1 }.take(5)

Пример

Создание последовательности из массива и преобразование элементов:

val numbers = arrayOf(1, 2, 3, 4, 5) val squaredSequence = numbers.asSequence().map { it * it } for (num in squaredSequence) { println(num) }

Результат выполнения кода:

1 4 9 16 25

Пример

Использование generateSequence для создания бесконечной последовательности:

val infiniteSeq = generateSequence(1) { it * 2 } val firstFive = infiniteSeq.take(5).toList() println(firstFive)

Результат выполнения кода:

List [1, 2, 4, 8, 16]

Пример

Фильтрация и преобразование последовательности:

val numbersSeq = sequenceOf(10, 20, 30, 40, 50) val result = numbersSeq .filter { it > 25 } .map { it / 10 } .toList() println(result)

Результат выполнения кода:

List [3, 4, 5]

Пример

Создание последовательности с помощью sequence builder:

val customSeq = sequence { yield(1) yieldAll(listOf(2, 3, 4)) yield(5) } val res = customSeq.toList() println(res)

Результат выполнения кода:

List [1, 2, 3, 4, 5]

Основные операции

Sequence поддерживает большинство операций как у коллекций:

val seq = sequenceOf(1, 2, 3, 4, 5) val filtered = seq.filter { it % 2 == 0 } val mapped = seq.map { it * 10 } val first = seq.first() val last = seq.last() val count = seq.count()

Смотрите также

  • интерфейс Iterable,
    который представляет итерируемую коллекцию
  • интерфейс List,
    который представляет список элементов
  • интерфейс Collection,
    который представляет базовый интерфейс коллекций
  • класс Array,
    который представляет массив элементов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить