DMarlon Studio

Lección 10 · 10 de 20

Trabajar con listas · Dart

Cambie listas en Dart: añada con add, addAll e insert, quite con remove, removeAt y removeLast, ordene con sort y copie partes con sublist.

Dart · Trabajar con listas en DMarlon Studio: el código del ejemplo y su salida en la terminal

Las listas de Dart pueden crecer y encoger. `add()` pone un elemento al final y `addAll()` pone varios a la vez, aquí Eva y Fran. `insert(0, 'Zoe')` lo pone en una posición concreta, la primera, y los demás se desplazan.

Para quitar hay tres formas: `remove('Ben')` busca el valor y lo borra, `removeAt(0)` borra la posición indicada y `removeLast()` el último. removeAt y removeLast devuelven lo que han quitado, por eso served guarda a Zoe, la primera atendida.

`sort()` ordena la propia lista, de menor a mayor; no crea una nueva. `reversed` da los elementos al revés, pero no es una lista, sino una secuencia que se recorre; `toList()` la convierte en una lista para guardarla en ranking.

`sublist(inicio, fin)` copia una parte de la lista: incluye el inicio y no el fin, así que ranking.sublist(0, 3) son las posiciones 0, 1 y 2, las tres mejores notas. Sin el segundo número, sublist(3) llega hasta el final.

`clear()` vacía la lista: la cola cierra con [] y longitud 0.

Código · main.dart

void main() {  var queue = ['Ana', 'Ben', 'Carla'];  // add puts one element at the end; addAll puts several.  queue.add('Dani');  queue.addAll(['Eva', 'Fran']);  print('Queue: $queue');  // insert puts it at a given position.  queue.insert(0, 'Zoe');  print('Zoe goes first: $queue');  // remove by value, removeAt by position, removeLast the last one.  queue.remove('Ben');  String served = queue.removeAt(0);  queue.removeLast();  print('$served served, Ben left, Fran gave up: $queue');  // sort orders the list itself, from lowest to highest.  var scores = [72, 95, 58, 81, 64, 88];  scores.sort();  print('Sorted: $scores');  // reversed gives the elements backwards; toList makes a list.  var ranking = scores.reversed.toList();  print('Ranking: $ranking');  // sublist(start, end) copies a part; end is not included.  print('Top 3: ${ranking.sublist(0, 3)}');  print('From the 4th on: ${ranking.sublist(3)}');  queue.clear(); // clear empties the list  print('Queue after closing: $queue (${queue.length})');}

Salida · dart run main.dart

Queue: [Ana, Ben, Carla, Dani, Eva, Fran]
Zoe goes first: [Zoe, Ana, Ben, Carla, Dani, Eva, Fran]
Zoe served, Ben left, Fran gave up: [Ana, Carla, Dani, Eva]
Sorted: [58, 64, 72, 81, 88, 95]
Ranking: [95, 88, 81, 72, 64, 58]
Top 3: [95, 88, 81]
From the 4th on: [72, 64, 58]
Queue after closing: [] (0)

Para recordar

  • add, addAll e insert añaden.
  • remove quita por valor; removeAt, por posición.
  • sort() ordena la propia lista.
  • reversed.toList() da una copia al revés.
  • sublist(inicio, fin) no incluye el fin.

Ejercicio

Parta de una lista de cinco tareas, añada una al principio y otra al final, quite la tercera, ordénela alfabéticamente y escriba solo las tres primeras con sublist.