Ce face hashMapOf
Toate trei creează un map modificabil, dar diferă prin ordinea în care apar cheile la parcurgere. hashMapOf dă un HashMap: rapid, dar ordinea cheilor nu este garantată și se poate schimba când adaugi elemente.
linkedMapOf dă un LinkedHashMap, care ține minte ordinea inserării (la fel ca mutableMapOf). sortedMapOf dă un java.util.TreeMap: cheile sunt mereu sortate crescător (alfabetic pentru texte), indiferent de ordinea adăugării. sortedMapOf există doar pe JVM.
Dacă nu ai nevoie de un tip anume, folosește mutableMapOf. Alege sortedMapOf când vrei rezultate sortate după cheie fără să sortezi de fiecare dată.
Parametri
| Parametru | Descriere |
|---|---|
perechi |
Perechi cheie to valoare inițiale (pot lipsi). |
Ce returnează
HashMap, LinkedHashMap sau SortedMap cu perechile date.
Exemple
Exemplul 1: Trei tipuri, trei ordini
Map-ul sortat afișează cheile alfabetic, cel „linked” în ordinea scrisă. Pentru HashMap nu ne bazăm pe ordine, așa că afișăm cheile sortate.
fun main() {
val sortat = sortedMapOf("Vaslui" to 3, "Bacău" to 5, "Iași" to 8)
val inOrdine = linkedMapOf("Vaslui" to 3, "Bacău" to 5, "Iași" to 8)
val hash = hashMapOf("Vaslui" to 3, "Bacău" to 5, "Iași" to 8)
println("sortedMapOf: $sortat")
println("linkedMapOf: $inOrdine")
println("hashMapOf (chei sortate de noi): ${hash.keys.sorted()}")
}
Rezultat
sortedMapOf: {Bacău=5, Iași=8, Vaslui=3}
linkedMapOf: {Vaslui=3, Bacău=5, Iași=8}
hashMapOf (chei sortate de noi): [Bacău, Iași, Vaslui]
Exemplul 2: Numărarea cuvintelor într-un HashMap
hashMapOf() fără argumente dă un map gol. La final sortăm perechile ca să avem o afișare stabilă.
fun main() {
val text = "mere pere mere prune mere pere"
val frecventa = hashMapOf<String, Int>()
for (cuvant in text.split(" ")) {
frecventa[cuvant] = (frecventa[cuvant] ?: 0) + 1
}
for (cuvant in frecventa.keys.sorted()) {
println("$cuvant: ${frecventa[cuvant]}")
}
}
Rezultat
mere: 3
pere: 2
prune: 1
Exemplul 3: SortedMap: prima și ultima cheie
Un SortedMap are și funcții proprii: firstKey(), lastKey(), headMap(cheie) (cheile mai mici decât cea dată).
fun main() {
val temperaturi = sortedMapOf(14 to 21.5, 8 to 12.0, 20 to 17.3, 11 to 18.4)
println(temperaturi)
println("Prima oră: ${temperaturi.firstKey()}, ultima: ${temperaturi.lastKey()}")
println("Dimineața (înainte de 12): ${temperaturi.headMap(12)}")
}
Rezultat
{8=12.0, 11=18.4, 14=21.5, 20=17.3}
Prima oră: 8, ultima: 20
Dimineața (înainte de 12): {8=12.0, 11=18.4}
Greșeli frecvente
- Te bazezi pe ordinea unui
HashMap: poate arăta „corect” azi și diferit după ce adaugi elemente sau schimbi versiunea Java. FoloseștelinkedMapOf/mutableMapOfsausortedMapOfcând ordinea contează. - Folosești
sortedMapOfîn cod Kotlin multiplatformă: există doar pe JVM.
Comenzi înrudite
mapOf: Creează un map (dicționar cheie → valoare) din perechi scrise cu „to”; mutableMapOf dă unul pe care îl poți modifica.hashSetOf: Creează o mulțime modificabilă: HashSet (fără ordine garantată) sau TreeSet (elemente mereu sortate).Map.toSortedMap: Creează un map nou cu cheile ordonate (crescător sau după un comparator), care rămâne sortat și după adăugări.Map.keys: Proprietățile keys, values și entries dau cheile, valorile și perechile cheie–valoare ale unui map.