Capitolo 6: Collections in Dart

2
minuti
25/3/25

Le collections in Dart sono strutture dati fondamentali che permettono di gestire e manipolare insiemi di valori in modo efficiente.

In questo capitolo esploreremo le principali collezioni offerte da Dart: liste, set e mappe.

Approfondiremo anche concetti come il tipo delle collezioni, metodi utili, iterazioni e tecniche avanzate per gestire le collezioni in modo ottimale.

Liste

Le liste in Dart sono strutture ordinate che possono contenere elementi di qualsiasi tipo. Possono essere modificate dinamicamente e offrono una vasta gamma di metodi per la gestione degli elementi.

Dichiarazione di una lista

List<int> numeri = [1, 2, 3, 4, 5];
var nomi = ['Alice', 'Bob', 'Charlie'];


Esercizio \\ Somma degli elementi di una lista

Scrivi un programma che calcola la somma degli elementi in una lista di numeri.

void main() {
 List<int> numeri = [10, 20, 30, 40];
 int somma = numeri.reduce((a, b) => a + b);
 print('La somma degli elementi è: \$somma');
}

Metodi delle liste

Dart fornisce diversi metodi per manipolare le liste.

var numeri = [1, 2, 3];
numeri.add(4); // Aggiunge un elemento
numeri.removeAt(1); // Rimuove l'elemento in posizione 1
numeri.sort(); // Ordina la lista

Annotazioni di tipo con liste

Specificare il tipo aiuta a prevenire errori:

List<String> frutta = ['Mela', 'Banana', 'Pera'];

Uso di var, final e const con le liste


var listaVar = [1, 2, 3]; // Può essere modificata
final listaFinal = [1, 2, 3]; // Non può essere riassegnata
const listaConst = [1, 2, 3]; // Immutevole

Set


I set sono collezioni non ordinate con elementi unici.

Set<int> numeri = {1, 2, 3, 3}; // Contiene solo {1, 2, 3}

Esercizio \\ Uso dei Set


Crea un set di numeri casuali e rimuovi i duplicati.

void main() {
 Set<int> numeri = {1, 2, 3, 3, 4, 5, 5};
 print(numeri); // Mostra solo numeri unici
}

Map

Le mappe memorizzano coppie chiave-valore.

Map<String, int> eta = {'Alice': 25, 'Bob': 30};
print(eta['Alice']);

Iterazione sulle mappe

eta.forEach((chiave, valore) {
 print('\$chiave ha \$valore anni');
});

Esercizio \\ Ordine della Pizza

Crea un programma che gestisce gli ordini delle pizze.

void main() {
 Map<String, int> ordine = {'Margherita': 2, 'Diavola': 1};
 ordine.forEach((pizza, quantita) {
   print('Ordine: \$quantita x \$pizza');
 });
}

Collezioni nidificate


Le collezioni possono essere annidate.

List<List<int>> matrice = [
 [1, 2, 3],
 [4, 5, 6],
 [7, 8, 9]
];
print(matrice[1][2]); // Stampa 6

Esercizio // Valutazioni di un ristorante


Crea una mappa per gestire le valutazioni di un ristorante.

void main() {
 Map<String, List<int>> valutazioni = {
   'Pizzeria Roma': [5, 4, 5],
   'Trattoria Milano': [3, 4, 2]
 };
 print(valutazioni);
}

Collection-if e Collection-for


Queste funzioni migliorano la gestione delle collezioni in modo conciso.

var numeri = [1, 2, 3];
var raddoppiati = [for (var num in numeri) num * 2];
print(raddoppiati); // [2, 4, 6]

Spread Operator


var numeri = [1, 2, 3];
var altriNumeri = [...numeri, 4, 5];

Esercizio \\ Lista della spesa


Crea una lista che combina più liste di articoli.

void main() {
 var frutta = ['Mela', 'Banana'];
 var verdura = ['Carota', 'Zucchina'];
 var listaSpesa = [...frutta, ...verdura];
 print(listaSpesa);
}

Copia delle Collezioni

Le liste possono essere copiate in modo sicuro.

var originale = [1, 2, 3];
var copia = List.from(originale);
copia.add(4);
print(originale); // [1, 2, 3]
print(copia); // [1, 2, 3, 4]

📚 Esercizi

🔹 Esercizio 1: Media dei numeri

Scrivi una funzione che calcoli la media di una lista di numeri interi.

double media(List<int> numeri) {
 // Implementa la funzione
}

🔹 Esercizio 2: Parole lunghe

Scrivi una funzione che accetti una lista di parole e restituisca solo quelle con più di 5 lettere.

List<String> paroleLunghe(List<String> parole) {
 // Implementa la funzione
}

🔹 Esercizio 3: Filtrare un elenco

Scrivi una funzione che prenda una lista di numeri e restituisca solo quelli pari.

List<int> numeriPari(List<int> numeri) {
 // Implementa la funzione
}

🔹 Esercizio 4: Sconto su una lista di prezzi

Scrivi una funzione che applichi uno sconto del 20% su una lista di prezzi.

List<double> applicaSconto(List<double> prezzi) {
 // Implementa la funzione
}

🔹 Esercizio 5: Dizionario di parole

Scrivi una funzione che accetti una lista di parole e restituisca una mappa dove le chiavi sono le parole e i valori la loro lunghezza.

Map<String, int> lunghezzaParole(List<String> parole) {
 // Implementa la funzione
}

Conclusione

Le collections sono strumenti essenziali in Dart e Flutter.

Comprendere il loro utilizzo e sfruttare le funzionalità avanzate permette di scrivere codice più efficiente e manutenibile.

La pratica costante con esercizi e progetti reali aiuterà a consolidare le conoscenze apprese.

Contattami

Hai domande sulla progettazione web
o sui servizi offerti?
Sarà un piacere assisterti.