Método WithIndex
Parte da seção Fundamentos do Journey de Kotlin da Coddy. Lição 75 de 93.
Ao percorrer uma lista, muitas vezes você precisa saber não apenas o elemento, mas também sua posição. O método withIndex() fornece ambos de uma só vez.
Chame withIndex() em qualquer lista para obter pares de índice e valor:
val colors = listOf("Red", "Green", "Blue")
for ((index, color) in colors.withIndex()) {
println("$index: $color")
}
// Saída:
// 0: Red
// 1: Green
// 2: BlueObserve a sintaxe dentro dos parênteses: (index, color). Isso é chamado de desestruturação, que desembrulha o índice e o valor em variáveis separadas. Você pode nomear essas variáveis da maneira que fizer sentido para o seu código.
Essa abordagem é mais limpa do que controlar manualmente um índice com uma variável contadora. Ela é especialmente útil quando você precisa exibir listas numeradas ou realizar ações diferentes com base na posição:
val tasks = listOf("Wake up", "Exercise", "Eat breakfast")
for ((i, task) in tasks.withIndex()) {
println("Step ${i + 1}: $task")
}
// Saída:
// Step 1: Wake up
// Step 2: Exercise
// Step 3: Eat breakfastDesafio
MédioVocê receberá uma lista de nomes de estudantes como entrada. Leia primeiro o número de estudantes e, em seguida, leia cada nome.
Usando withIndex(), imprima cada estudante com seu número de classificação (começando em 1, não em 0).
Formato da entrada:
- Primeira linha: um inteiro
nrepresentando o número de estudantes - Próximas
nlinhas: nomes dos estudantes (strings)
Formato da saída:
Imprima cada estudante em uma linha separada no formato:
Rank 1: Alice
Rank 2: Bob
Rank 3: CharlieLembre-se de que withIndex() fornece índices começando em 0, portanto, você precisará ajustá-los para que os números de classificação comecem em 1.
Experimente você mesmo
fun main() {
// Leia o número de alunos
val n = readLine()!!.toInt()
// Leia os nomes dos alunos em uma lista
val students = mutableListOf<String>()
for (i in 1..n) {
students.add(readLine()!!)
}
// TODO: Escreva seu código abaixo
// Use withIndex() para iterar pelos alunos e imprimir a classificação deles
// Lembre-se: withIndex() fornece índices começando de 0, mas as classificações devem começar de 1
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores – Parte 1
Operadores aritméticosOperador móduloAtribuição aumentadaOperadores de comparaçãoRecapitulação – Matemática simples7Entrada e Saída Básicas
Função PrintlnTemplates de StringEntrada com ReadLineConversão de TiposRevisão - Anos até a AposentadoriaRevisão - Verdadeiro ou Falso10Funções
Declare uma funçãoParâmetros e argumentosValores de retornoArgumentos nomeadosValores padrãoFunções de expressão únicaRecapitulação — função SigmaRecapitulação — função de validação13Iterando sobre sequências
Iterando sobre elementosMétodo WithIndexIterando sobre strings P1Iterando sobre strings P2Revisão - Letras indexadas2Variáveis
Val vs VarInferência de TiposNúmerosStringBooleanoConvenções de NomenclaturaRecapitulação - Inicializar Variáveis5Operadores – Parte 2
Operadores lógicos – Parte 1Operadores lógicos – Parte 2Operadores lógicos – Parte 3Ternário com expressão ifRecapitulação – Lógica simples8Calculadora de Divisão da Conta
Mensagem de Boas-vindasObtendo a Entrada11FizzBuzz com uma Reviravolta
Visão Geral do JogoA Função FizzBuzz3Nullabilidade
O que é Null SafetyTipos anuláveisOperador de chamada seguraOperador ElvisNoções básicas do desafio de funçõesAsserção de não nuloRecapitulação - Acesso seguro6Tomada de Decisões
Instrução IfIf - ElseIf como ExpressãoExpressão WhenWhen com IntervalosRecapitulação - Calculadora Simples9Laços de Repetição
Laço ForLaço WhileLaço Do-WhileBreakContinueIntervalos em LaçosLaço AninhadoRecapitulação - FatorialRecapitulação - Entrada Dinâmica12Fundamentos de Listas
List vs MutableListAcessando ElementosModificando ListasMétodos de ListaPair e TripleRecapitulação - Lista de ProdutosRecapitulação - Lista Invertida15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do ProgramaPratique por conta própria: Playground de Kotlin