Menu
Coddy logo textTech

Búsquedas seguras en mapas

Parte de la sección Lógica y flujo del Journey de Kotlin de Coddy. Lección 2 de 63.

map[key] devuelve un valor anulable porque la clave puede estar ausente. Usa el operador Elvis como alternativa. Un cero almacenado es diferente de un valor ausente. El acceso de solo lectura no implica inmutabilidad profunda.

Dentro de main:

val stock = mapOf("pen" to 0)
println(stock["book"] ?: -1)

La clave book está ausente, por lo que el resultado null selecciona el valor alternativo.

Una clave faltante produce null; el valor alternativo de Elvis se usa únicamente para null.

challenge icon

Desafío

Intermedio

Completa lookupStock con los parámetros stock: Map<String, Int> y key: String. Devuelve el stock correspondiente a la clave solicitada o -1 cuando no esté presente. Los valores del stock son no negativos.

A menos que se indiquen límites más estrictos arriba, las colecciones contienen como máximo 100 elementos en cada nivel, y los argumentos enteros y los valores enteros de las colecciones están entre -1000 y 1000. El texto proporcionado para el análisis puede incluir representaciones no válidas o fuera de rango, tal como se describe.

Devuelve un valor de tipo Int. Conserva el código de entrada/salida proporcionado. Lee los argumentos escalares, uno por línea; una lista comienza con su cantidad, seguida de sus elementos, y un mapa comienza con la cantidad de sus entradas, seguida de cada clave y valor. Las listas anidadas repiten el formato de cantidad y elementos para cada fila. El main proporcionado imprime el valor devuelto seguido de un salto de línea. Las listas utilizan el formato estándar entre corchetes de Kotlin; no imprimas etiquetas adicionales.

Pruébalo tú mismo

fun lookupStock(stock: Map<String, Int>, key: String): Int {
    // Escribe tu solución aquí.
    return 0
}
fun main() {
    val stockCount = readln().toInt()
    val stock = mutableMapOf<String, Int>()
    for (i0 in 0 until stockCount) {
        val stockKey = readln()
        val stockValue = readln().toInt()
        stock[stockKey] = stockValue
    }
    val key = readLine().orEmpty()
    println(lookupStock(stock, key))
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Playground de Kotlin