List.sublist în Dart

List: liste Dart 2.0

sublist copiază o porțiune a listei într-o listă nouă; getRange dă aceeași porțiune ca iterable leneș.

Sintaxă
List<E> sublist(int start, [int? end])
Iterable<E> getRange(int start, int end)

Ce face List.sublist

sublist(start, end) returnează o listă nouă cu elementele de pe pozițiile start … end - 1. Fără end, merge până la final. Este o copie: modificarea ei nu schimbă lista inițială.

getRange(start, end) returnează aceleași elemente ca iterable leneș, fără copiere. Ambele aruncă RangeError dacă pozițiile ies din listă; pentru variante tolerante folosește skip și take.

Parametri

Parametru Descriere
start Prima poziție inclusă.
end Poziția de după ultimul element (nu este inclusă).

Ce returnează

sublist: o List nouă. getRange: un Iterable.

Exemple

Exemplul 1: Bucăți dintr-o listă

void main() {
  final luni = ['ian', 'feb', 'mar', 'apr', 'mai', 'iun'];
  print('T1: ${luni.sublist(0, 3)}');
  print('T2: ${luni.sublist(3)}');
  print('getRange: ${luni.getRange(1, 4)}');

  final copie = luni.sublist(0, 2);
  copie[0] = 'IANUARIE';
  print('$copie / ${luni.first}');
}

Rezultat

T1: [ian, feb, mar]
T2: [apr, mai, iun]
getRange: (feb, mar, apr)
[IANUARIE, feb] / ian

Exemplul 2: Poziții în afara listei

void main() {
  final note = [9, 8, 10];
  try {
    print(note.sublist(1, 5));
  } on RangeError catch (e) {
    print(e);
  }
  print('tolerant: ${note.skip(1).take(4).toList()}');
}

Rezultat

RangeError (end): Invalid value: Not in inclusive range 1..3: 5
tolerant: [8, 10]

Greșeli frecvente

  • Dai lungimea porțiunii ca al doilea argument (sublist(2, 3) pentru „3 elemente de la 2”). Al doilea argument este poziția de final: sublist(2, 5).

Comenzi înrudite

  • Iterable.take: take păstrează primele n elemente, skip sare peste primele n elemente.
  • List.removeRange: removeRange șterge elementele dintre două poziții; clear golește toată lista.
  • List.setRange: setRange suprascrie o porțiune a listei cu elemente din altă colecție; List.copyRange copiază dintr-o listă în alta.