Segmentación de listas con SubList
Parte de la sección Fundamentos del Journey de Kotlin de Coddy. Lección 79 de 93.
A veces necesitas extraer una parte de una lista en lugar de trabajar con toda la colección. El método subList() te permite crear una vista de un rango específico de elementos a partir de una lista existente.
El método subList() acepta dos parámetros: el índice inicial (inclusivo) y el índice final (exclusivo). Esto significa que el elemento del índice inicial se incluye, pero el elemento del índice final no:
val numbers = listOf(10, 20, 30, 40, 50)
val slice = numbers.subList(1, 4)
println(slice) // [20, 30, 40]En este ejemplo, subList(1, 4) extrae elementos desde el índice 1 hasta (pero sin incluir) el índice 4. Esto nos proporciona el segundo, tercer y cuarto elementos.
La sublista resultante es una vista de la lista original, no una copia. Esto es importante de entender cuando trabajas con listas mutables, ya que los cambios en la lista original pueden afectar a la sublista.
Para la mayoría de los casos de uso con listas de solo lectura, simplemente puedes usarla para acceder a un rango de elementos:
val days = listOf("Mon", "Tue", "Wed", "Thu", "Fri")
val midWeek = days.subList(1, 4)
println(midWeek) // [Tue, Wed, Thu]Desafío
IntermedioRecibirás una lista de enteros y dos índices que representan un rango. Extrae una sublista usando subList() e imprime la suma de los elementos extraídos.
Formato de entrada:
- Primera línea: un entero
nque representa el número de elementos - Siguientes
nlíneas: enteros que se añadirán a la lista - Siguiente línea: el índice inicial (inclusive)
- Última línea: el índice final (exclusivo)
Formato de salida:
Imprime la suma de los elementos de la sublista extraída.
Ejemplo:
Si la lista es [5, 10, 15, 20, 25], con un índice inicial de 1 y un índice final de 4, la sublista sería [10, 15, 20] y la salida debería ser 45.
Pruébalo tú mismo
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: Escribe tu código debajo
// Usa subList() para extraer elementos desde startIndex hasta endIndex
// Calcula e imprime la suma de los elementos extraídos
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores, parte 1
Operadores aritméticosOperador móduloAsignación aumentadaOperadores de comparaciónRepaso: matemáticas simples7Entrada y salida básicas
Función PrintlnPlantillas de cadenasEntrada con ReadLineConversión de tiposRepaso - Años hasta la jubilaciónRepaso - Verdadero o falso10Funciones
Declarar una funciónParámetros y argumentosValores de retornoArgumentos con nombreValores predeterminadosFunciones de una sola expresiónRepaso - Función SigmaRepaso - Función de validación2Variables
Val frente a VarInferencia de tiposNúmerosCadenaBooleanoConvenciones de nomenclaturaRepaso: inicializar variables5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Operadores lógicos Parte 3Ternario con expresión ifRepaso: lógica simple8Calculadora para dividir la cuenta
Mensaje de bienvenidaObtención de datos11FizzBuzz con un giro
Descripción general del juegoLa función FizzBuzz14Listas avanzadas
Segmentación de listas con SubListSegmentación de listas con Take DropOperadores de secuenciasEl método ContainsRepaso - Buscar una página3Nullabilidad
Qué es la seguridad frente a valores nulosTipos anulablesOperador de llamada seguraOperador ElvisConceptos básicos de retos de funcionesAfirmación de no nulidadRepaso: acceso seguro6Toma de decisiones
Sentencia ifIf - ElseIf como expresiónExpresión whenWhen con rangosRepaso - Calculadora simple9Bucles
Bucle ForBucle WhileBucle Do-WhileBreakContinueRangos en buclesBucle anidadoRepaso - FactorialRepaso - Entrada dinámicaPractica por tu cuenta: Playground de Kotlin