LinkedHashSet în Dart

Set care păstrează ordinea inserării; este tipul implicit al seturilor scrise cu acolade.

Sintaxă
import 'dart:collection';

abstract final class LinkedHashSet<E> implements Set<E>
LinkedHashSet<E>({bool equals(E a, E b)?, int hashCode(E e)?, bool isValidKey(dynamic)?})
LinkedHashSet<E>.identity()

Ce face LinkedHashSet

LinkedHashSet are căutare rapidă prin cod hash și ține minte ordinea în care au fost adăugate elementele. Un literal {'a', 'b'} sau Set() creează un astfel de set.

Îl creezi explicit pentru o regulă proprie de egalitate (cu equals și hashCode) sau pentru egalitate după identitate (LinkedHashSet.identity()). Adăugarea unui element care există deja nu îi schimbă poziția.

Parametri

Parametru Descriere
equals Opțional: când sunt egale două elemente.
hashCode Opțional: codul hash al unui element, compatibil cu equals.
isValidKey Opțional: ce obiecte pot fi căutate.

Ce returnează

Un set gol care păstrează ordinea inserării.

Exemple

Exemplul 1: Etichete unice, în ordinea apariției

import 'dart:collection';

void main() {
  final etichete = LinkedHashSet<String>(
    equals: (a, b) => a.toLowerCase() == b.toLowerCase(),
    hashCode: (e) => e.toLowerCase().hashCode,
  );
  etichete.addAll(['Dart', 'flutter', 'DART', 'Mobil', 'Flutter']);
  print(etichete);
}

Rezultat

{Dart, flutter, Mobil}

Exemplul 2: Adăugarea din nou nu schimbă ordinea

import 'dart:collection';

void main() {
  final vizitate = {'Iași', 'Cluj', 'Sibiu'};
  vizitate.add('Iași');
  print(vizitate);
  print('Este LinkedHashSet: ${vizitate is LinkedHashSet}');
}

Rezultat

{Iași, Cluj, Sibiu}
Este LinkedHashSet: true

Greșeli frecvente

  • Presupui că un HashSet păstrează ordinea ca LinkedHashSet. Nu o păstrează; dacă ordinea contează, folosește set-ul implicit.

Comenzi înrudite

  • Set: Colecție fără elemente duplicate: fiecare valoare apare o singură dată, iar căutarea este rapidă.
  • HashSet: Set bazat pe tabel hash, fără ordine garantată a elementelor; potrivit doar pentru verificări de apartenență.
  • SplayTreeSet: Set care ține elementele mereu sortate și fără duplicate.
  • LinkedHashMap: Map care păstrează ordinea inserării cheilor; este tipul implicit al map-urilor scrise cu acolade.
  • Set.lookup: Returnează elementul din set egal cu valoarea dată (obiectul păstrat în set), sau null dacă nu există.