Java: come gestire le liste (ArrayList)

Ecco un spiegone introduttivo sulle liste ArrayList in Java, con un esempio pratico semplice per capire subito come funziona. Quando programmi in Java, spesso hai bisogno di una struttura dati che ti permetta di conservare e gestire una raccolta di elementi dinamica: una lista che può crescere o ridursi mentre il programma gira. Qui entra in gioco l’ArrayList.

Cos’è un ArrayList?

  • È una collezione che memorizza elementi in ordine
  • È basata su un array interno che si ridimensiona automaticamente quando serve
  • Permette di aggiungere, rimuovere, modificare elementi facilmente
  • È parte del package java.util
  • È tipo generico, quindi puoi usarla per qualsiasi tipo di dato (ArrayList<String>, ArrayList<Integer>, o classi personalizzate)

Perché usare ArrayList invece di un array normale?

  • Gli array in Java hanno dimensione fissa: non puoi aggiungere elementi oltre la capacità iniziale
  • Con ArrayList, la dimensione cresce in automatico
  • Offre molti metodi utili per manipolare la lista:
    • add(), remove(), get(), set(), size(), ecc.
  • È molto comoda e flessibile per gestire liste di dati variabili

ArrayList — la lista più usata in Java!

Si usa così:

import java.util.ArrayList;

public class ListaDemo {
    public static void main(String[] args) {
        ArrayList<String> nomi = new ArrayList<>();

        nomi.add("Anna");
        nomi.add("Marco");
        nomi.add("Luca");

        System.out.println("Lista: " + nomi);             // [Anna, Marco, Luca]
        System.out.println("Primo nome: " + nomi.get(0)); // Anna

        nomi.remove("Marco"); // oppure: nomi.remove(1);
        System.out.println("Dopo rimozione: " + nomi);
    }
}

In sintesi il programma qui riportato crea una lista di nomi, la stampa, legge un elemento specifico, ne elimina uno, e poi stampa la lista modificata. È un esempio semplice di come usare un ArrayList per memorizzare, leggere e modificare dati in Java.

Nel dettaglio:

  1. Importa la classe ArrayList dal package java.util, così possiamo usarla nel programma.
  2. Definisce una classe chiamata ListaDemo con il metodo main, il punto di partenza del programma.
  3. All’interno del main, crea una nuova lista dinamica di stringhe chiamata nomi usando ArrayList<String>.
  4. Aggiunge tre nomi alla lista: "Anna", "Marco" e "Luca" usando il metodo .add().
  5. Stampa la lista completa, quindi mostra tutti i nomi contenuti: [Anna, Marco, Luca].
  6. Stampa il primo elemento della lista usando .get(0), cioè "Anna".
  7. Rimuove l’elemento "Marco" dalla lista (puoi farlo specificando il valore o l’indice).
  8. Stampa la lista aggiornata dopo la rimozione, quindi ora la lista contiene solo [Anna, Luca].

Ciclo su ArrayList

Per fare un ciclo variamo leggermente la sintassi e scriviamo così:

for (String nome : nomi) {
    System.out.println("Ciao " + nome);
}

Se ad esempio nomi contiene [“pippo”, “pluto”, “fernando”] avremo come output:

Ciao pippo
Ciao pluto
Ciao fernando

Lista di oggetti personalizzati

Puoi anche salvare oggetti dentro una lista, esattamente come con gli array.

Persona.java

public class Persona {
    String nome;
    int età;

    public Persona(String nome, int età) {
        this.nome = nome;
        this.età = età;
    }

    public void stampa() {
        System.out.println(nome + " ha " + età + " anni.");
    }
}

Main.java

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<Persona> persone = new ArrayList<>();

        persone.add(new Persona("Giulia", 24));
        persone.add(new Persona("Davide", 31));
        persone.add(new Persona("Sara", 29));

        for (Persona p : persone) {
            p.stampa();
        }
    }
}

✨ Operazioni utili sulle liste

MetodoEffetto
add(x)aggiunge alla fine
add(i, x)inserisce in posizione i
remove(i) / remove(obj)rimuove per indice o oggetto
get(i)legge elemento in posizione i
set(i, x)cambia elemento in posizione i
size()restituisce numero di elementi
clear()svuota la lista
contains(x)controlla se contiene x

Ordinare liste

import java.util.Collections;

Collections.sort(nomi); // ordina la lista in ordine alfabetico

Per oggetti personalizzati serve in genere un Comparator.