Queue.removeFirst în Dart

removeFirst scoate și returnează primul element al cozii; removeLast scoate și returnează ultimul element.

Sintaxă
E removeFirst()
E removeLast()

Ce face Queue.removeFirst

removeFirst() scoate elementul de la început și îl returnează; removeLast() face același lucru la sfârșit. Ambele sunt rapide.

Pe o coadă goală, ambele aruncă StateError. Verifică întâi isNotEmpty.

Ce returnează

Elementul scos din coadă.

Exemple

Exemplul 1: Stivă de farfurii (ultimul pus, primul luat)

import 'dart:collection';

void main() {
  final stiva = Queue<String>();
  for (final f in ['albă', 'albastră', 'roșie']) {
    stiva.addLast(f);
  }
  while (stiva.isNotEmpty) {
    print('Iau farfuria ${stiva.removeLast()}');
  }
}

Rezultat

Iau farfuria roșie
Iau farfuria albastră
Iau farfuria albă

Exemplul 2: Parcurgere în lățime (BFS) și coadă goală

import 'dart:collection';

void main() {
  final drumuri = {
    'Iași': ['Vaslui', 'Suceava'],
    'Vaslui': ['Bacău'],
    'Suceava': ['Botoșani'],
    'Bacău': <String>[],
    'Botoșani': <String>[],
  };
  final coada = Queue.of(['Iași']);
  final ordine = <String>[];
  while (coada.isNotEmpty) {
    final oras = coada.removeFirst();
    ordine.add(oras);
    coada.addAll(drumuri[oras]!);
  }
  print(ordine);

  try {
    coada.removeFirst();
  } on StateError catch (e) {
    print('Coadă goală: ${e.message}');
  }
}

Rezultat

[Iași, Vaslui, Suceava, Bacău, Botoșani]
Coadă goală: No element

Greșeli frecvente

  • Chemi removeFirst fără să verifici dacă mai sunt elemente și programul se oprește cu StateError.

Comenzi înrudite

  • Queue: Coadă la care adaugi și scoți rapid elemente la ambele capete (început și sfârșit).
  • Queue.addFirst: addFirst pune un element la începutul cozii, addLast (la fel ca add) îl pune la sfârșit.
  • List.remove: Șterge un element după valoare (remove), după poziție (removeAt) sau ultimul element (removeLast).