ListQueue în Dart

Implementarea obișnuită a lui Queue, cu elementele într-un tablou circular; permite și elementAt rapid.

Sintaxă
import 'dart:collection';

final class ListQueue<E> implements Queue<E>
ListQueue<E>([int? initialCapacity])
ListQueue<E>.of(Iterable<E> elements)

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ă initialCapacity limitează 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.