Array e ArrayList
- #java
- #programmazione
- #array
- #arraylist
- #list
- #collezioni
In questa lezione
- 1. Array
- 1.1 Dichiarazione e creazione
- 1.2 Assegnare e leggere valori
- 1.3 Inizializzazione diretta
- 1.4 Lunghezza
- 1.5 Scorrere un array
- 1.6 Limiti degli array
- 2. ArrayList e List
- 2.1 List è un’interfaccia
- 2.2 Tipi Generici (Generics)
- 2.3 Operazioni principali
- 2.4 Esempio completo
- 3. Scorrere una collezione
- 3.1 For classico (con indice)
- 3.2 For-each (consigliato)
- 3.3 Ricerca
- 4. Array vs ArrayList — confronto
- 5. List più comuni in Java
- 6. Quiz a risposta multipla
- 7. Esercizi
- 7.1 Esercizio: media dei voti
- 7.2 Esercizio: lista di nomi
- 7.3 Esercizio: massimo di una lista
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 primitivo | Classe Wrapper |
|---|---|
int | Integer |
double | Double |
char | Character |
boolean | Boolean |
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
| Caratteristica | Array | ArrayList |
|---|---|---|
| Dimensione | Fissa | Dinamica |
| Metodi | Solo .length | Molti metodi pronti |
| Tipi | Primitivi e oggetti | Solo oggetti (wrapper) |
| Quando usarlo | Dimensione nota e fissa | Dimensione variabile |
5. List più comuni in Java
| Classe | Descrizione |
|---|---|
ArrayList | Veloce in lettura, uso generale |
LinkedList | Veloce in inserimento/rimozione |
Vector | Versione sincronizzata (raramente usata) |
6. Quiz a risposta multipla
Mettiti alla prova
0/5 risposte
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();
}
}