Sostieni AppuntiFacili con una piccola donazione su PayPal

Dona con PayPal
AppuntiFacili
Torna Indietro Segnala errore

Array e ArrayList

Dennis Turco Informatica Java
Ultima modifica:
#java#programmazione#array#arraylist#list#collezioni

1. Array

Un array è una sequenza di elementi dello stesso tipo con dimensione fissa.

1.1 Dichiarazione e creazione

// tipo[] nome = new tipo[dimensione];
int[] numeri = new int[5];
String[] nomi = new String[3];

1.2 Assegnare e leggere valori

Gli indici partono da 0.

numeri[0] = 10;
numeri[1] = 20;
numeri[2] = 30;

System.out.println(numeri[0]); // -> 10

1.3 Inizializzazione diretta

int[] voti = {8, 7, 9, 6, 10};
String[] giorni = {"Lunedì", "Martedì", "Mercoledì"};

1.4 Lunghezza

System.out.println(voti.length); // -> 5

1.5 Scorrere un array

// for classico (con indice)
for (int i = 0; i < voti.length; i++) {
    System.out.println("Voto " + i + ": " + voti[i]);
}

// for-each (consigliato quando non serve l'indice)
for (int voto : voti) {
    System.out.println(voto);
}

1.6 Limiti degli array

  • Dimensione fissa: non si può aggiungere un elemento oltre la capacità iniziale
  • Se si accede a un indice non valido → ArrayIndexOutOfBoundsException
int[] arr = new int[3];
arr[5] = 99; // -> ERRORE: ArrayIndexOutOfBoundsException

2. ArrayList e List

ArrayList è una lista dinamica: può crescere e ridursi automaticamente.

Per saperne di più su come funzionano le liste internamente → LISTE

2.1 List è un’interfaccia

List non può essere istanziata direttamente:

List<Integer> lista = new List<>();         // -> ERRORE
List<Integer> lista = new ArrayList<>();    // -> OK

ArrayList è la classe concreta che implementa List più usata.

2.2 Tipi Generici (Generics)

Tra < > si specifica il tipo di dato. Le liste funzionano solo con oggetti, non tipi primitivi → si usano le classi wrapper:

Tipo primitivoClasse Wrapper
intInteger
doubleDouble
charCharacter
booleanBoolean
List<Integer> numeri = new ArrayList<>();
List<String>  nomi   = new ArrayList<>();
List<Double>  prezzi = new ArrayList<>();

2.3 Operazioni principali

List<String> nomi = new ArrayList<>();

nomi.add("Marco");            // aggiunge in fondo
nomi.add(0, "Luigi");         // inserisce all'indice 0
nomi.get(1);                  // legge l'elemento all'indice 1
nomi.set(0, "Peach");         // modifica l'elemento all'indice 0
nomi.remove(0);               // rimuove per indice
nomi.remove("Marco");         // rimuove per valore
nomi.size();                  // numero di elementi
nomi.contains("Luigi");       // true/false
nomi.isEmpty();               // true se vuota
nomi.clear();                 // svuota la lista
System.out.println(nomi);     // stampa tutta la lista

2.4 Esempio completo

import java.util.*;

public class Main {
    public static void main(String[] args) {

        List<Integer> numeri = new ArrayList<>();

        numeri.add(10);
        numeri.add(20);
        numeri.add(30);

        System.out.println(numeri);         // -> [10, 20, 30]
        System.out.println(numeri.size());  // -> 3
        System.out.println(numeri.get(0));  // -> 10
    }
}

3. Scorrere una collezione

3.1 For classico (con indice)

for (int i = 0; i < nomi.size(); i++) {
    System.out.println(i + ": " + nomi.get(i));
}

3.2 For-each (consigliato)

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

3.3 Ricerca

if (nomi.contains("Marco")) {
    System.out.println("Trovato!");
}

4. Array vs ArrayList — confronto

CaratteristicaArrayArrayList
DimensioneFissaDinamica
MetodiSolo .lengthMolti metodi pronti
TipiPrimitivi e oggettiSolo oggetti (wrapper)
Quando usarloDimensione nota e fissaDimensione variabile

5. List più comuni in Java

ClasseDescrizione
ArrayListVeloce in lettura, uso generale
LinkedListVeloce in inserimento/rimozione
VectorVersione sincronizzata (raramente usata)

6. Quiz a risposta multipla

Quale indice ha il primo elemento di un array?

Cos'è List in Java?

Quale metodo aggiunge un elemento a un ArrayList?

Come si ottiene la dimensione di un ArrayList?

Qual è la differenza principale tra array e ArrayList?

7. Esercizi

7.1 Esercizio: media dei voti

Crea un array di 5 voti interi e calcola la media.

💡 Mostra soluzione
public class Main {
    public static void main(String[] args) {

        int[] voti = {7, 8, 6, 9, 7};
        int somma = 0;

        for (int v : voti) {
            somma += v;
        }

        System.out.println("Media: " + (double) somma / voti.length);
    }
}

7.2 Esercizio: lista di nomi

Chiedere all’utente 5 nomi, salvarli in una ArrayList e stamparli.

💡 Mostra soluzione
import java.util.*;

public class Main {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        List<String> nomi = new ArrayList<>();

        for (int i = 0; i < 5; i++) {
            System.out.print("Inserisci nome: ");
            nomi.add(input.nextLine());
        }

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

        input.close();
    }
}

7.3 Esercizio: massimo di una lista

Inserisci numeri finché l’utente scrive 0, poi stampa il valore massimo.

💡 Mostra soluzione
import java.util.*;

public class Main {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        List<Integer> numeri = new ArrayList<>();
        int n;

        do {
            System.out.print("Inserisci numero (0 per terminare): ");
            n = input.nextInt();
            if (n != 0) numeri.add(n);
        } while (n != 0);

        int max = numeri.get(0);
        for (int num : numeri) {
            if (num > max) max = num;
        }

        System.out.println("Massimo: " + max);
        input.close();
    }
}
Prenota una lezione