La classe ArrayList è una classe che implementa l’interfaccia List e rappresenta una lista dinamica basata su array. A differenza di un array tradizionale (int[]), la sua dimensione può crescere o ridursi automaticamente. Può contenere elementi duplicati e mantiene l’ordine di inserimento.

Package: java.util. Interfaccia di riferimento: List (che estende Collection).


CARATTERISTICHE PRINCIPALI

  • Struttura interna: array ridimensionabile automaticamente.
  • Ordine garantito: mantiene l’ordine in cui gli elementi sono stati inseriti.
  • Accesso veloce per indice: tempo di accesso O(1) per lettura/scrittura.
  • Inserimenti e rimozioni: veloci in fondo alla lista. Più lenti all’inizio o in mezzo (perché richiedono lo spostamento degli elementi).
  • Non sincronizzata: più veloce, ma non thread-safe.
  • Elementi null: ammessi.

METODI PRINCIPALI

MetodoDescrizione
add(E e)Aggiunge un elemento in fondo.
add(int index, E e)Inserisce un elemento in una posizione specifica.
get(int index)Restituisce l’elemento all’indice indicato.
set(int index, E e)Sostituisce l’elemento all’indice indicato.
remove(int index)Rimuove l’elemento all’indice indicato.
remove(Object o)Rimuove la prima occorrenza dell’oggetto indicato.
size()Restituisce il numero di elementi.
isEmpty()Verifica se la lista è vuota.
contains(Object o)Verifica se la lista contiene un elemento.
clear()Rimuove tutti gli elementi.
iterator()Restituisce un Iterator per iterare sulla lista.
forEach(Consumer action)Esegue un’azione per ogni elemento.

ESEMPIO

import java.util.ArrayList;
 
public class EsempioArrayList {
    public static void main(String[] args) {
        // Creazione di un ArrayList di Stringhe
        ArrayList<String> listaSlime = new ArrayList<>();
 
        // Aggiunta di elementi
        listaSlime.add("Papa V");
        listaSlime.add("Nerissima Serpe");
        listaSlime.add("Fritu");
 
        // Inserimento in posizione specifica
        listaSlime.add(1, "Mario");
 
        // Stampa della lista
        System.out.println("Lista Slime: " + listaSlime);
 
        // Accesso a un elemento
        System.out.println("Primo elemento: " + listaSlime.get(0));
 
        // Modifica di un elemento
        listaSlime.set(2, "Luigi");
 
        // Rimozione di un elemento
        listaSlime.remove("Fritu");
 
        // Verifica presenza
        System.out.println("C'é Papa?" + listaSlime.contains("Papa V"));
 
        // Iterazione con for-each
        System.out.println("\nLista finale:");
        for (String prodotto : listaSlime) {
            System.out.println("- " + slime);
        }
    }
}

Output possibile:

Lista slime: [Papa V, Mario, Nerissima Serpe, Fritu]
Primo elemento: Papa V
C é Papa? true
 
Lista finale:
- Papa V
- Mario
- Luigi