0Pricing
Kotlin Academy · Aula

Criação de Sequências

A partir de coleções e geradores

Criação de Sequências é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 2 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.

Criando sequências

Há várias maneiras de criar uma Sequence: a partir de coleções existentes, de elementos, com uma função geradora ou com um construtor. Esta lição aborda cada uma delas.

De uma coleção com asSequence

A abordagem mais comum é chamar asSequence() em uma coleção existente para processá-la de forma preguiçosa.

fun main() {
    val seq = listOf(1, 2, 3, 4).asSequence()
    val result = seq.map { it * 2 }.toList()
    println(result)
}

De elementos com sequenceOf

sequenceOf cria uma sequência diretamente a partir de um conjunto fixo de valores.

fun main() {
    val seq = sequenceOf("a", "b", "c")
    seq.forEach { println(it) }
}

Sequências infinitas com generateSequence

generateSequence cria uma sequência possivelmente infinita a partir de uma semente e de uma função que calcula o próximo elemento. Combine-a com take para limitá-la.

fun main() {
    val powers = generateSequence(1) { it * 2 }
    val first5 = powers.take(5).toList()
    println(first5)
}

Interrompendo generateSequence

Se a função do próximo elemento retornar null, a sequência termina. Isso permite gerar elementos até que uma condição seja atendida.

fun main() {
    val countdown = generateSequence(5) { if (it > 1) it - 1 else null }
    println(countdown.toList())
}

generateSequence sem uma semente

Você pode passar uma única lambda produtora que retorna o próximo valor ou nulo. Isso é útil para ler fluxos de entrada de forma preguiçosa.

fun main() {
    var n = 0
    val seq = generateSequence { if (n < 3) n++ else null }
    println(seq.toList())
}

O construtor de sequências

O construtor sequence { } permite produzir elementos de forma imperativa usando yield (um valor) e yieldAll (muitos valores).

fun main() {
    val seq = sequence {
        yield(1)
        yield(2)
        yieldAll(listOf(3, 4))
    }
    println(seq.toList())
}

Produção preguiçosa

O construtor também é preguiçoso: o código entre as produções é executado apenas à medida que os elementos são solicitados. Combinado com take, você pode descrever geradores infinitos com segurança.

fun main() {
    val naturals = sequence {
        var i = 1
        while (true) {
            yield(i)
            i++
        }
    }
    println(naturals.take(4).toList())
}

Fibonacci com generateSequence

Um exemplo clássico: gerar números de Fibonacci de forma preguiçosa usando um par como estado.

fun main() {
    val fib = generateSequence(Pair(0, 1)) { Pair(it.second, it.first + it.second) }
        .map { it.first }
    println(fib.take(8).toList())
}

Convertendo novamente em uma coleção

Uma sequência se torna uma coleção concreta somente quando você chama uma operação terminal como toList(), toSet() ou toMutableList().

fun main() {
    val set = sequenceOf(1, 2, 2, 3).toSet()
    println(set)
}

Escolhendo um método de criação

Use asSequence() para dados existentes, sequenceOf para valores fixos, generateSequence para séries calculadas e o construtor sequence { } para uma geração imperativa personalizada.

Verificação rápida

Como generateSequence sabe quando parar?

Recapitulação

Você pode criar sequências com asSequence(), sequenceOf, generateSequence (semente mais próximo elemento, termina com nulo) e o construtor sequence { } com yield/yieldAll. Em seguida, você verá como as operações preguiçosas evitam listas intermediárias.

Perguntas Frequentes

A aula “Criação de Sequências” é grátis?

Sim — o texto completo de “Criação de Sequências” é 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 “Criação de Sequências”?

A partir de coleções e geradores 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 2 de 4.

Quanto tempo leva a aula “Criação de Sequências”?

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

  1. Por que Usar Sequências
  2. Criação de Sequências
  3. Operações Tardias
  4. Sequências versus Coleções
← Voltar para Kotlin Academy