Set.lookup în Dart

Set: mulțimi Dart 2.0

Returnează elementul din set egal cu valoarea dată (obiectul păstrat în set), sau null dacă nu există.

Sintaxă
E? lookup(Object? object)

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 lookup când îți trebuie doar „da sau nu”. Pentru asta este contains; lookup are 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 ==.