Set.contains în Dart

Set: mulțimi Dart 2.0

contains verifică rapid dacă un element este în set; containsAll verifică dacă sunt toate elementele unei colecții.

Sintaxă
bool contains(Object? value)
bool containsAll(Iterable<Object?> other)

Ce face Set.contains

contains pe un set nu parcurge toate elementele, ca la o listă, ci caută direct după codul hash. De aceea, pentru verificări repetate într-o colecție mare, un set este alegerea bună.

containsAll(colectie) returnează true doar dacă fiecare element din colecție se află în set.

Parametri

Parametru Descriere
value Elementul căutat.
other Elementele care trebuie să fie toate în set.

Ce returnează

true sau false.

Exemple

Exemplul 1: Cuvinte interzise

void main() {
  const interzise = {'prost', 'urât'};
  const mesaj = 'Ce film urât am văzut azi';
  final cuvinte = mesaj.toLowerCase().split(' ');
  final gasite = cuvinte.where(interzise.contains).toList();
  print(gasite.isEmpty ? 'Mesaj curat' : 'Cuvinte interzise: $gasite');
}

Rezultat

Cuvinte interzise: [urât]

Exemplul 2: Are candidatul toate competențele?

void main() {
  final cerute = ['Dart', 'Git', 'SQL'];
  final ana = {'Dart', 'Flutter', 'Git', 'SQL'};
  final mihai = {'Dart', 'Git'};
  print('Ana: ${ana.containsAll(cerute)}');
  print('Mihai: ${mihai.containsAll(cerute)}');
  print('Mihai știe Git: ${mihai.contains('Git')}');
}

Rezultat

Ana: true
Mihai: false
Mihai știe Git: true

Greșeli frecvente

  • Pui într-un set obiecte ale unei clase proprii fără == și hashCode. contains va găsi doar exact același obiect, nu unul cu aceleași date.

Comenzi înrudite

  • Set.lookup: Returnează elementul din set egal cu valoarea dată (obiectul păstrat în set), sau null dacă nu există.
  • Iterable.contains: Verifică dacă un element egal (==) cu valoarea dată există în colecție.
  • Map.containsKey: containsKey verifică dacă o cheie există în map, iar containsValue dacă o valoare apare la vreo cheie.
  • Set.identity: Set care compară elementele după identitate (același obiect în memorie), nu după operatorul ==.