Študijné materiály

Mapa (Map) je dátová štruktúra, ktorá ukladá dvojice kľúč - hodnota. Každý kľúč je unikátny a má priradenú jednu hodnotu.

fun main() {
    val map1: Map<String, Int> = mapOf("Janko" to 25, "Fero" to 30)
    val map2: Map<String, Int> = emptyMap()
    val map3: MutableMap<String, Int> = mutableMapOf("Janko" to 25)
    val map4: MutableMap<String, Int> = mutableMapOf()

    println(map1["Janko"])    // 25
    println(map1["Marek"])    // null - neexistujuci kluc
    println(map1.getOrDefault("Marek", 0)) // 0

    map3["Fero"] = 30         // pridanie noveho paru
    map3["Janko"] = 26        // zmena existujucej hodnoty
    map3 += "Lukas" to 22     // pridanie cez operator +=
    map3.remove("Fero")       // odstranenie podla kluca

    println(map3)             // {Janko=26, Lukas=22}
}

Zápis "kľúč" to hodnota je skrátený zápis pre vytvorenie dvojice (Pair).

9.1.1 Iterácia nad mapou

fun main() {
    val map = mapOf("Janko" to 25, "Fero" to 30, "Marek" to 20)

    for ((name, age) in map) {
        println("$name ma $age rokov")
    }

    map.keys.forEach { key -> println(key) }       // vsetky kluce
    map.values.forEach { value -> println(value) } // vsetky hodnoty
}

9.1.2 Priemerne hodnoty z mapy

fun main() {
    val známky = mapOf("Matika" to 1, "Fyzika" to 2, "Angličtina" to 1)
    val priemer = známky.values.average()
    println("Priemer: $priemer") // Priemer: 1.333...
}

Úlohy

Úloha 1

Vytvor mapu s piatimi menami a ich výškami v cm. Vypočítaj priemernú výšku.

Úloha 2

Vytvor meniteľnú mapu produktov a cien, zmeň cenu jedného produktu a jeden produkt odstráň.

Úloha 3

Prejdi mapu známok pomocou deštrukcie dvojice kľúč-hodnota a vypíš každý predmet so známkou.