Ce face Map.containsKey
containsKey(k) întoarce true dacă cheia există. Forma scurtă este k in map (și k !in map). Căutarea după cheie este foarte rapidă.
containsValue(v) caută o valoare. Pentru că valorile nu sunt indexate, se parcurg toate intrările, deci pe map-uri mari este mai lent.
Atenție: dacă valoarea unei chei poate fi null, map[k] == null nu face diferența între „cheie lipsă” și „cheie cu valoarea null”; containsKey face.
Parametri
| Parametru | Descriere |
|---|---|
cheie / valoare |
Ce se caută. |
Ce returnează
true sau false.
Exemple
Exemplul 1: Este utilizatorul înregistrat?
in este forma scurtă pentru containsKey.
fun main() {
val utilizatori = mapOf("ana.pop" to "Ana Pop", "ion99" to "Ion Ionescu")
for (cont in listOf("ion99", "maria")) {
if (cont in utilizatori) println("$cont: bun venit, ${utilizatori[cont]}!")
else println("$cont: cont inexistent")
}
println(utilizatori.containsKey("ana.pop"))
}
Rezultat
ion99: bun venit, Ion Ionescu!
maria: cont inexistent
true
Exemplul 2: Căutare după valoare
Verificăm dacă vreun elev are nota 10 și dacă vreunul are 4.
fun main() {
val note = mapOf("Ana" to 10, "Ion" to 8, "Maria" to 9)
println("Cineva are 10: ${note.containsValue(10)}")
println("Cineva are 4: ${note.containsValue(4)}")
}
Rezultat
Cineva are 10: true
Cineva are 4: false
Exemplul 3: Valoare null sau cheie lipsă
Pentru Ion și pentru Radu, [] dă null. Doar containsKey arată că Ion există (fără telefon), iar Radu nu.
fun main() {
val telefoane = mapOf("Ana" to "0722 111 222", "Ion" to null)
for (nume in listOf("Ion", "Radu")) {
println("$nume: valoare=${telefoane[nume]}, există=${telefoane.containsKey(nume)}")
}
}
Rezultat
Ion: valoare=null, există=true
Radu: valoare=null, există=false
Greșeli frecvente
- Folosești
containsValueîntr-o buclă pe un map mare: fiecare apel parcurge tot map-ul. Construiește un map invers sau un set de valori. - Verifici
if (k in map)și apoimap[k]!!: mai simplu,map[k]?.let { ... }saugetOrElse.
Comenzi înrudite
Map.getValue: Citește valoarea unei chei: getValue aruncă excepție dacă lipsește, getOrDefault și getOrElse dau o valoare de rezervă.Iterable.contains: contains (operatorul in) verifică dacă un element există; indexOf dă poziția primei apariții sau -1.Map.keys: Proprietățile keys, values și entries dau cheile, valorile și perechile cheie–valoare ale unui map.mapOf: Creează un map (dicționar cheie → valoare) din perechi scrise cu „to”; mutableMapOf dă unul pe care îl poți modifica.