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
removeFirstfără să verifici dacă mai sunt elemente și programul se oprește cuStateError.
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).