Ce face ListQueue
ListQueue ține elementele într-un tablou intern folosit circular, deci adăugările și scoaterile la ambele capete sunt rapide. Este clasa pe care o primești când scrii Queue().
Poți da o capacitate inițială dacă știi cam câte elemente vor fi. Spre deosebire de o coadă generică, elementAt(i) este rapid la ListQueue.
Parametri
| Parametru | Descriere |
|---|---|
initialCapacity |
Opțional: spațiul rezervat la început (crește automat la nevoie). |
Ce returnează
Un ListQueue gol sau cu elementele date.
Exemple
Exemplul 1: Fereastră glisantă: media ultimelor 3 temperaturi
import 'dart:collection';
void main() {
final temperaturi = [18, 20, 23, 21, 25, 24];
final fereastra = ListQueue<int>(3);
for (final t in temperaturi) {
fereastra.addLast(t);
if (fereastra.length > 3) fereastra.removeFirst();
if (fereastra.length == 3) {
final media = fereastra.reduce((a, b) => a + b) / 3;
print('${fereastra.toList()} -> ${media.toStringAsFixed(1)} °C');
}
}
}
Rezultat
[18, 20, 23] -> 20.3 °C
[20, 23, 21] -> 21.3 °C
[23, 21, 25] -> 23.0 °C
[21, 25, 24] -> 23.3 °C
Exemplul 2: Queue() este un ListQueue
import 'dart:collection';
void main() {
final q = Queue<int>();
print(q is ListQueue<int>);
final lq = ListQueue.of(['a', 'b', 'c', 'd']);
print(lq.elementAt(2));
lq.removeFirst();
print(lq.elementAt(2));
}
Rezultat
true
c
d
Greșeli frecvente
- Crezi că
initialCapacitylimitează mărimea cozii. Este doar o rezervare inițială; coada crește singură.
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.Queue.removeFirst: removeFirst scoate și returnează primul element al cozii; removeLast scoate și returnează ultimul element.