Strutura dati dinamica Lista
ITT Fauser — Classi quarte
Collezioni dinamiche con List<T>
| Array int[] | Lista List<int> | |
|---|---|---|
| Dimensione | Fissa, stabilita alla creazione | Variabile, cresce e si riduce |
| Aggiungere elementi | Non possibile | .Add() |
| Rimuovere elementi | Non possibile | .Remove() |
| Accesso per indice | arr[i] | lista[i] |
| Numero elementi | .Length | .Count |
| Namespace | — | System.Collections.Generic |
Il tipo T in List<T> indica il tipo degli elementi contenuti nella lista.
using System.Collections.Generic;
// Lista vuota di interi
List<int> numeri = new List<int>();
// Lista inizializzata con valori
List<string> nomi = new List<string> { "Alice", "Bob", "Carlo" };
// Lista di double
List<double> prezzi = new List<double> { 1.99, 3.50, 0.89 };
| Metodo | Descrizione |
|---|---|
| .Add(elem) | Aggiunge in fondo |
| .Insert(i, elem) | Inserisce in posizione i |
| .Remove(elem) | Rimuove la prima occorrenza |
| .RemoveAt(i) | Rimuove l'elemento in posizione i |
| .Clear() | Svuota la lista |
| .Count | Numero di elementi presenti |
List<string> spesa =
new List<string>();
spesa.Add("latte");
spesa.Add("pane");
spesa.Add("uova");
spesa.Insert(1, "burro");
// ["latte","burro","pane","uova"]
spesa.Remove("pane");
spesa.RemoveAt(0);
Console.WriteLine(spesa.Count); // 2
// ["burro","uova"]
List<int> voti =
new List<int> { 6, 8, 7, 9, 6 };
voti.Contains(9); // True
voti.IndexOf(6); // 0
voti.Count; // 5
List<int> val =
new List<int> { 5, 2, 8, 1 };
val.Sort();
// [1, 2, 5, 8]
val.Reverse();
// [8, 5, 2, 1]
Quando non serve la posizione dell'elemento.
List<string> colori =
new List<string>
{ "rosso", "verde", "blu" };
foreach (string c in colori)
Console.WriteLine(c);
Quando serve anche la posizione. Notare .Count al posto di .Length.
for (int i = 0; i < colori.Count; i++)
{
Console.WriteLine(
$"[{i}] {colori[i]}");
}
// [0] rosso
// [1] verde
// [2] blu
È possibile passare facilmente da un formato all'altro: utile quando si lavora con metodi che richiedono un tipo specifico.
// Array → Lista
string[] arrNomi = { "Anna", "Luca", "Sara" };
List<string> listaNomi = new List<string>(arrNomi);
// Lista → Array
string[] arrCopia = listaNomi.ToArray();
using System;
using System.Collections.Generic;
List<int> voti = new List<int>();
string input;
do
{
Console.Write("Inserisci voto (o 'fine'): ");
input = Console.ReadLine().Trim();
if (input != "fine")
voti.Add(int.Parse(input));
} while (input != "fine");
voti.Sort();
double somma = 0;
foreach (int v in voti) somma += v;
Console.WriteLine($"Voti ordinati: {string.Join(", ", voti)}");
Console.WriteLine($"Media: {somma / voti.Count:F2}");