Memorizzare classi definite dall'utente in una Collezione in Java

Concetti Chiave
  • Le collezioni in Java possono memorizzare oggetti di classi definite dall'utente, non solo tipi integrati.
  • Utilizzando collezioni come LinkedList, è possibile gestire facilmente e visualizzare oggetti complessi come indirizzi postali.
  • Il Framework delle Collezioni fornisce soluzioni pronte all'uso per gestire e manipolare dati, riducendo la quantità di codice necessario per implementare funzionalità comuni.

Collezioni e Classi Definite dall'Utente

Per semplicità, gli esempi delle lezioni precedenti hanno memorizzato oggetti integrati, come String o Integer, in una collezione.

Naturalmente, le collezioni non sono limitate alla memorizzazione di oggetti integrati, anzi vale il contrario. Il potere delle collezioni è che possono memorizzare qualsiasi tipo di oggetto, inclusi oggetti di classi create dall'utente.

Ad esempio, consideriamo il seguente esempio che usa una LinkedList per memorizzare indirizzi postali:

// Un semplice esempio di lista di indirizzi postali.
import java.util.*;

class Indirizzo {
    private String nome;
    private String via;
    private String citta;
    private String cap;

    Indirizzo(String n, String v, String c,
            String cap) {
        nome = n;
        via = v;
        citta = c;
        this.cap = cap;
    }

    public String toString() {
        return nome + "\n" + via + "\n" +
                citta + " " + cap;
    }
}

class ListaPostale {

    public static void main(String[] args) {
        // Crea una LinkedList di tipo Indirizzo.
        LinkedList<Indirizzo> lp = new LinkedList<Indirizzo>();

        // Aggiunge elementi alla lista collegata.
        lp.add(new Indirizzo("Michele Verdi",
                             "Via Quercia 11",
                             "Milano", "20100"));
        lp.add(new Indirizzo("Mario Rossi", "Viale Acero 42",
                             "Roma", "00100"));
        lp.add(new Indirizzo("Luca Bianchi", "Via Olmo 86",
                             "Torino", "10100"));
        // Visualizza la lista postale.
        for (Indirizzo elemento : lp)
            System.out.println(elemento + "\n");
        System.out.println();
    }
}

L'output del programma è mostrato qui:

Michele Verdi
Via Quercia 11
Milano 20100

Mario Rossi
Viale Acero 42
Roma 00100

Luca Bianchi
Via Olmo 86
Torino 10100

Oltre a memorizzare una classe definita dall'utente in una collezione, un'altra cosa importante da notare riguardo al programma precedente è che è abbastanza breve.

Quando consideriamo che imposta una lista collegata che può memorizzare, recuperare ed elaborare indirizzi postali in circa 50 righe di codice, il potere del Framework delle Collezioni inizia a diventare evidente. Se tutte queste funzionalità dovessero essere codificate manualmente, il programma sarebbe diverse volte più lungo. Le collezioni offrono soluzioni pronte all'uso a un'ampia varietà di problemi di programmazione. Andrebbero usate ogni volta che la situazione si presenta.