Интерфейс 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,
который представляет массив элементов