Encadeando pipelines e evitando listas intermediárias com Sequence
Crie pipelines de várias etapas e use Sequence para avaliação preguiçosa.
Encadeando pipelines e evitando listas intermediárias com Sequence é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.
O problema: listas intermediárias
Avaliação imediata versus tardia
Conversão para Sequence
val result = (1..1_000_000)
.asSequence()
.filter { it % 2 == 0 }
.map { it * it }
.take(5)
.toList()
println(result) // [4, 16, 36, 64, 100]Sequence é tardia: nenhum trabalho antes da operação terminal
val seq = generateSequence(1) { it + 1 } // infinite!
.filter { it % 3 == 0 }
.map { it * it }
val first5 = seq.take(5).toList()
println(first5) // [9, 36, 81, 144, 225]generateSequence: sequências infinitas
val fibonacci = generateSequence(Pair(0, 1)) { (a, b) -> Pair(b, a + b) }
.map { it.first }
val first10 = fibonacci.take(10).toList()
println(first10) // [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]Construtor sequence
val evens = sequence {
var n = 0
while (true) {
yield(n)
n += 2
}
}
println(evens.take(5).toList()) // [0, 2, 4, 6, 8]Quando usar Sequence
Quando NÃO usar Sequence
// Overkill for small list:
listOf(1, 2, 3).asSequence().map { it * 2 }.toList()
// Just use:
listOf(1, 2, 3).map { it * 2 }Operações terminais de Sequence
val s = (1..100).asSequence().filter { it % 7 == 0 }
println(s.first()) // 7
println(s.count()) // 14
println(s.sum()) // 728Operações com estado versus sem estado
val s = (1..10).asSequence()
.filter { it > 3 } // stateless: lazy
.sorted() // stateful: must see all elements
.take(3).toList()
println(s) // [4, 5, 6]constrainOnce: segurança de iteração única
val seq = generateSequence(1) { if (it < 5) it + 1 else null }
.constrainOnce()
val first = seq.toList() // OK
// val second = seq.toList() // IllegalStateException!Verificação rápida
Recapitulação
Aprenda Kotlin com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 51
- Aulas
- 203
Perguntas Frequentes
A aula “Encadeando pipelines e evitando listas intermediárias com Sequence” é grátis?
Sim — o texto completo de “Encadeando pipelines e evitando listas intermediárias com Sequence” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.
O que vou aprender em “Encadeando pipelines e evitando listas intermediárias com Sequence”?
Crie pipelines de várias etapas e use Sequence para avaliação preguiçosa. Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Kotlin Academy?
Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Encadeando pipelines e evitando listas intermediárias com Sequence”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Kotlin Academy?
Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- map e flatMap: transformando cada elemento
- filter, filterNot e partition
- fold, reduce e runningFold
- Encadeando pipelines e evitando listas intermediárias com Sequence