Ce face Set.lookup
lookup caută la fel ca contains, dar returnează chiar obiectul din set, nu doar true. Contează când două obiecte sunt „egale” după regula set-ului, dar nu identice: de exemplu, un set care compară textele fără să țină cont de litere mari și mici.
Dacă nu există niciun element egal, rezultatul este null.
Parametri
| Parametru | Descriere |
|---|---|
object |
Valoarea căutată. |
Ce returnează
Elementul găsit în set sau null.
Exemple
Exemplul 1: Numele scris corect, din set
Set-ul compară numele fără să țină cont de litere mari. lookup('IASI') returnează forma păstrată în set.
import 'dart:collection';
void main() {
final orase = LinkedHashSet<String>(
equals: (a, b) => a.toLowerCase() == b.toLowerCase(),
hashCode: (s) => s.toLowerCase().hashCode,
)..addAll(['Iasi', 'Cluj', 'Sibiu']);
print(orase.contains('IASI'));
print(orase.lookup('IASI'));
print(orase.lookup('Brasov'));
}
Rezultat
true
Iasi
null
Exemplul 2: Obiecte cu egalitate după cod
class Produs {
final String cod;
final String nume;
Produs(this.cod, this.nume);
@override
bool operator ==(Object other) => other is Produs && other.cod == cod;
@override
int get hashCode => cod.hashCode;
}
void main() {
final catalog = {Produs('P1', 'Telemea de vacă'), Produs('P2', 'Cozonac')};
final gasit = catalog.lookup(Produs('P2', '?'));
print(gasit?.nume);
}
Rezultat
Cozonac
Greșeli frecvente
- Folosești
lookupcând îți trebuie doar „da sau nu”. Pentru asta estecontains;lookupare rost când vrei obiectul păstrat în set.
Comenzi înrudite
Set.contains: contains verifică rapid dacă un element este în set; containsAll verifică dacă sunt toate elementele unei colecții.LinkedHashSet: Set care păstrează ordinea inserării; este tipul implicit al seturilor scrise cu acolade.Set.identity: Set care compară elementele după identitate (același obiect în memorie), nu după operatorul ==.