Map.containsKey în Dart

containsKey verifică dacă o cheie există în map, iar containsValue dacă o valoare apare la vreo cheie.

Sintaxă
bool containsKey(Object? key)
bool containsValue(Object? value)

Ce face Map.containsKey

containsKey(cheie) returnează true dacă map-ul are cheia, chiar dacă valoarea ei este null. Este rapidă, pentru că map-ul caută direct după cheie.

containsValue(valoare) caută printre valori. Trebuie să le verifice pe rând, deci pe un map mare este mai lentă decât containsKey.

Parametri

Parametru Descriere
key Cheia căutată.
value Valoarea căutată (comparată cu ==).

Ce returnează

true sau false.

Exemple

Exemplul 1: Există utilizatorul?

void main() {
  final varste = {'ana': 21, 'mihai': 34};
  for (final nume in ['ana', 'ioana']) {
    if (varste.containsKey(nume)) {
      print('$nume are ${varste[nume]} ani');
    } else {
      print('$nume nu este înregistrat');
    }
  }
  print('Are cineva 34 de ani? ${varste.containsValue(34)}');
  print('Are cineva 40 de ani? ${varste.containsValue(40)}');
}

Rezultat

ana are 21 ani
ioana nu este înregistrat
Are cineva 34 de ani? true
Are cineva 40 de ani? false

Exemplul 2: Cheie cu valoarea null

map['x'] == null nu face diferența între „cheie lipsă” și „cheie cu valoarea null”. containsKey face.

void main() {
  final telefoane = <String, String?>{'Ana': '0722 111 222', 'Radu': null};
  for (final nume in ['Radu', 'Elena']) {
    print('$nume: valoare = ${telefoane[nume]}, '
        'există = ${telefoane.containsKey(nume)}');
  }
}

Rezultat

Radu: valoare = null, există = true
Elena: valoare = null, există = false

Greșeli frecvente

  • Folosești containsValue într-o buclă pe un map mare. Fiecare apel parcurge toate valorile; dacă ai nevoie des, păstrează un al doilea map sau un Set cu valorile.

Comenzi înrudite

  • Map.operator[]: map[cheie] citește valoarea unei chei (sau null), iar map[cheie] = valoare adaugă sau înlocuiește o pereche.
  • Map.putIfAbsent: Returnează valoarea unei chei; dacă cheia lipsește, o calculează cu funcția dată, o salvează și o returnează.
  • Set.contains: contains verifică rapid dacă un element este în set; containsAll verifică dacă sunt toate elementele unei colecții.
  • Iterable.contains: Verifică dacă un element egal (==) cu valoarea dată există în colecție.