Fatiamento de Listas com SubList
Parte da seção Fundamentos do Journey de Kotlin da Coddy. Lição 79 de 93.
Às vezes, você precisa extrair uma parte de uma lista em vez de trabalhar com a coleção inteira. O método subList() permite criar uma visão de um intervalo específico de elementos de uma lista existente.
O método subList() recebe dois parâmetros: o índice inicial (inclusivo) e o índice final (exclusivo). Isso significa que o elemento no índice inicial é incluído, mas o elemento no índice final não é:
val numbers = listOf(10, 20, 30, 40, 50)
val slice = numbers.subList(1, 4)
println(slice) // [20, 30, 40]Neste exemplo, subList(1, 4) extrai elementos do índice 1 até (mas sem incluir) o índice 4. Isso nos fornece o segundo, o terceiro e o quarto elementos.
A sublista resultante é uma visão da lista original, não uma cópia. É importante entender isso ao trabalhar com listas mutáveis, pois alterações na lista original podem afetar a sublista.
Para a maioria dos casos de uso com listas somente leitura, você pode simplesmente usá-la para acessar um intervalo de elementos:
val days = listOf("Mon", "Tue", "Wed", "Thu", "Fri")
val midWeek = days.subList(1, 4)
println(midWeek) // [Tue, Wed, Thu]Desafio
MédioVocê receberá uma lista de inteiros e dois índices que representam um intervalo. Extraia uma sublista usando subList() e imprima a soma dos elementos extraídos.
Formato de entrada:
- Primeira linha: um inteiro
nrepresentando o número de elementos - Próximas
nlinhas: inteiros a serem adicionados à lista - Próxima linha: o índice inicial (inclusivo)
- Última linha: o índice final (exclusivo)
Formato de saída:
Imprima a soma dos elementos da sublista extraída.
Exemplo:
Se a lista for [5, 10, 15, 20, 25] com o índice inicial 1 e o índice final 4, a sublista será [10, 15, 20] e a saída deverá ser 45.
Experimente você mesmo
fun main() {
val n = readLine()!!.toInt()
val list = mutableListOf<Int>()
repeat(n) {
list.add(readLine()!!.toInt())
}
val startIndex = readLine()!!.toInt()
val endIndex = readLine()!!.toInt()
// TODO: Escreva seu código abaixo
// Use subList() para extrair elementos de startIndex a endIndex
// Calcule e imprima a soma dos elementos extraídos
}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ção2Variá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 FizzBuzz14Listas Avançadas
Fatiamento de Listas com SubListFatiamento de Listas com Take DropOperadores de SequênciaO Método ContainsRevisão - Pesquisar uma Página3Nullabilidade
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