MORENO SARDELLA · RECUPERO JAVA
← Tutte le lezioni
Lezione 4

ARRAY E ARRAYLIST

Collezioni di dati: array a dimensione fissa, il ciclo for-each, la copia profonda, la classe ArrayList che cresce da sola, e i membri static.

01
Gli array

Tanti dati in fila

Un array raccoglie tanti valori dello stesso tipo sotto un solo nome. Ha dimensione fissa, decisa alla creazione, e si accede agli elementi con un indice che parte da 0.

array.java
int[] numeri = new int[5];     // 5 caselle: indici 0..4
numeri[0] = 10;                // prima casella
numeri[4] = 50;                // ultima casella
System.out.println(numeri.length);  // 5
02
Scorrere un array

Il ciclo for-each

Per leggere tutti gli elementi senza usare l'indice c'e' il for-each: “per ogni elemento x dentro l'array, fai...”.

for classico

for (int i = 0; i < v.length; i++) System.out.println(v[i]);

for-each

for (int x : v) System.out.println(x);

Algoritmi fondamentali: somma, media, ricerca del massimo/minimo, conteggio. Sono sempre un ciclo che attraversa l'array tenendo un “accumulatore”.

03
Attenzione ai riferimenti

La copia profonda

Un array e' un oggetto: la variabile contiene un riferimento, non i dati. Quindi int[] b = a; non copia l'array, fa puntare b allo stesso array di a. Per una copia vera (profonda) bisogna creare un nuovo array e copiare elemento per elemento.

copia.java
// copia SBAGLIATA: stesso array
int[] b = a;                 // modificare b cambia anche a!

// copia PROFONDA: array nuovo e indipendente
int[] c = new int[a.length];
for (int i = 0; i < a.length; i++) c[i] = a[i];
04
ArrayList e static

Liste che crescono

L'ArrayList e' come un array ma dinamico: cresce e si riduce da solo con add e remove. Si indica il tipo degli elementi tra parentesi angolari.

arraylist.java
import java.util.ArrayList;
ArrayList<String> nomi = new ArrayList<>();
nomi.add("Anna");
nomi.add("Bruno");
System.out.println(nomi.size());   // 2
for (String n : nomi) System.out.println(n);

Un membro static appartiene alla classe, non al singolo oggetto: e' condiviso da tutti. Tipico uso: un contatore di quanti oggetti sono stati creati.

public static int conteggio = 0; // uno solo per tutta la classe // nel costruttore: conteggio++; // si legge cosi': Studente.conteggio

Esercizi su array, ArrayList e static ↓

Array e ArrayList - Esercizi basescarica ↓
Array e ArrayList - Esercizi avanzatiscarica ↓