Sostieni AppuntiFacili con una piccola donazione su PayPal

Dona con PayPal
AppuntiFacili
Torna Indietro Segnala errore

Collezioni Java: List e ArrayList

✍️ Dennis Turco 🏷️ Informatica 📘 Java
Ultima modifica:
#java#programmazione#list#arraylist#collezioni

0. Note

La spiegazione approfondita su come funzionano le liste è stata affrontata qualche lezione prima, per saperne di più LISTE In questa lezione si discute su come usare le liste che mette a disposizione direttamente il linguaggio senza necessità di doverle definire da capo ogni volta.

1. Descrizione

In Java, le collezioni permettono di gestire gruppi di dati in modo dinamico.

A differenza degli array, le collezioni:

  • possono crescere o ridursi automaticamente
  • offrono molti metodi già pronti
  • semplificano la gestione dei dati

Una delle strutture più utilizzate è la List.

Una List rappresenta una lista ordinata di elementi accessibili tramite indice.

2. Array vs List

In questo esempio implementiamo una la Coda utilizzando una lista.

2.1 Array

int[] numeri = new int[3];
  • dimensione fissa
  • meno flessibile
  • pochi metodi disponibili

2.2 List

List<Integer> numeri = new ArrayList<>();
  • dimensione dinamica
  • molti metodi utili
  • più moderna e utilizzata

3. Cos’è List?

List è una interfaccia. Non può essere creata direttamente:

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

ArrayList è una classe concreta che implementa List.

4. Tipi Generici (Generics)

Tra < > si specifica il tipo di dato contenuto nella lista.

Esempi:

List<Integer> numeri = new ArrayList<>();
List<String> nomi = new ArrayList<>();
List<Double> prezzi = new ArrayList<>();

Le List funzionano solo con oggetti, non con tipi primitivi.

Tipo primitivoClasse Wrapper
intInteger
doubleDouble
charCharacter
booleanBoolean

5. Operazioni principali

5.1 Aggiungere elementi

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

5.2 Stampare la lista

System.out.println(nomi); // -> output: [Marco, Luca, Anna]

5.3 Accesso tramite indice

System.out.println(nomi.get(0)); // -> output: Marco

5.4 Modificare un elemento

nomi.set(1, "Giulia");

5.5 Rimuovere elementi

nomi.remove(0);

o

nomi.remove("Anna");

5.6 Dimensione della lista

nomi.size();

5.7 Verificare se è vuota

nomi.isEmpty();

5.8 Controllare se contiene un elemento

nomi.contains("Marco");

6. Scorrere una List

6.1 Ciclo for classico

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

6.2 For-each (consigliato)

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

7. ArrayList di numeri

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);

        for(Integer n : numeri){
            System.out.println(n);
        }
    }
}

8. List più comuni in Java

ClasseDescrizione
ArrayListveloce in lettura
LinkedListveloce inserimento/rimozione
Vectorversione sincronizzata (raramente usata)

9. Quiz a risposta multipla

Cos'è List in Java?

Quale classe implementa List?

Quale metodo aggiunge un elemento?

Come si legge un elemento?

Quale metodo restituisce la dimensione?

10. Esercizi

10.1 Esercizio

Creare una ArrayList di interi e stampare:

  • tutti i numeri
  • la dimensione della lista
💡 Mostra soluzione
import java.util.*;

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

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

        numeri.add(5);
        numeri.add(10);
        numeri.add(15);

        for(Integer n : numeri){
            System.out.println(n);
        }

        System.out.println("Dimensione: " + numeri.size());
    }
}

10.2 Esercizio

Chiedere all’utente 5 nomi e salvarli in una ArrayList, poi 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();
    }
}

12.3 Esercizio

Inserire numeri finché l’utente scrive 0 e poi stampare il 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(Integer num : numeri){
            if(num > max)
                max = num;
        }

        System.out.println("Massimo: " + max);

        input.close();
    }
}
Prenota una lezione