Fondamenti di informatica T-A
Esercitazione 7 : Collezioni
AA 2012/2013
Tutor : Domenico Di Carlo
<[email protected]>
Collection
• java.util.Collection è un'interfaccia, più nello specifico è
l'interfaccia radice in una tassonomia di interfacce e di
classi concrete
• Una collection rappresenta un qualunque gruppo di oggetti
▫ Alcune collezioni permettono l'esistenza di duplicati, altre no.
▫ Alcune sono collezioni ordinate, altre no. L'ordinamento viene
effettuato secondo il criterio definito nella compareTo(Object)
• La JDK non prevede implementazione alcuna per questa
interfaccia : prevede invece classi (come TreeSet ed
ArrayList) che implementaano interefacce più specifiche da
essa derivate (come Set e List).
Fondamenti di informatica A-K - Domenico Di Carlo
Collection
• L'interfaccia Collection definisce (ma non implementa)
alcuni metodi base, quali :
▫
▫
▫
▫
boolean add (Element e) <- per inserire un elemento
boolean remove (Element e) <- per eliminare un elemento
int size() <- restituisce il numero di elementi nella collezione
Bollean isEmpty() <- restituisce true se è vuota
• List, Queue, Set etc sono interfacce loro stesse !
Fondamenti di informatica A-K - Domenico Di Carlo
Esempio pratico : ArrayList
• ArrayList <E>
▫ Una collezione in cui :
 posso inserire l'emento i-esimo ad un indice specifico
 add(int index, E element)
Inserts the specified element at the specified position in this list.
 add(E e)
Appends the specified element to the end of this list.
 in cui possono apparire duplicati.
 La classe ArrayList implementa l'interfaccia List
• Esempio:
List<String> strings = new ArrayList<String>();
strings.add("Two"); strings.add("Three"); strings.add(0, "One");
strings.add(3, "One"); strings.add("Three"); strings.add(strings.size() - 1, "Two");
System.out.println(strings);
// Output: [One, Two, Three, One, Two, Three]
Fondamenti di informatica A-K - Domenico Di Carlo
Esempio pratico : TreeSet
• TreeSet <E>
▫ Una collezione che
 impone ordinamento naturale (interfaccia Comparable)
 add(E e)
Adds the specified element to this set if it is not already present.
 senza duplicati, cioè in cui non può esistere una coppia di elementi e1 ed e2 tali
per cui e1.equals(e2).
 La classe Treeset implementa l'interfaccia SortedSet che a sua volta implementa
l'interfaccia Set
• Esempio:
SortedSet<String> sortedSet = new TreeSet<String>();
sortedSet.add("One"); sortedSet.add("Two");
sortedSet.add("One"); sortedSet.add("Three");
System.out.println(sortedSet.toString());
// Output: [One, Three, Two] // (natural order : o<th<tw, no duplicates)
Fondamenti di informatica A-K - Domenico Di Carlo
Array VS Arraylist
• Array :
▫ Contengono solo oggetti
dello stesso tipo, non
possiamo avere in uno
stesso Array una Stringa
ed un intero
▫ Sono di dimensione
prefissata e non
estendibile
• ArrayList :
▫ Possono contenere oggetti
qualsiasi. All'interno della
medesima istanza di
ArrayList possiamo
trovare un float ed una
Stringa
▫ La dimensione iniziale non
è predeterminata,
andando ad aggiungere o
rimuovere elementi c'è un
resize automatico
Fondamenti di informatica A-K - Domenico Di Carlo
Treeset, Esercitazione 7.1
Fondamenti di informatica A-K - Domenico Di Carlo
Esercitazione 7.2
• Si vogliono gestire gli autoveicoli registrati presso un ufficio di
motorizzazione Civile. L’ufficio memorizza modello, targa ed
anno di immatricolazione di ogni automobile registrata.
• Si definisca la classe “Automobile”, che:
presenti dei campi interni per memorizzare i dati necessari
definisca un costruttore opportuno
definisca i metodi per accedere ai campi interni
definisca il metodo “equals” per stabilire l’uguaglianza con un’altra
automobile (l’uguaglianza va verificata solo sulla targa)
▫ implementi l’interfaccia “Comparable”, per stabilire la precedenza
con un’altra automobile (si utilizzi l’ordine alfabetico sulle targhe)
▫
▫
▫
▫
• Una applicazione di test (Esercitazione 72) che crei un insieme
di auto che non ammetta elementi ripetuti. Lo popoli
inventando qualche auto del tipo :
▫ mezzi.add(new Automobile("Seat Ibiza", "DS244TC", 2009));
stampi a video l'insieme creato e valuti la soluzione ottenuta
provando ad inserire più volte un'auto già presente
Fondamenti di informatica A-K - Domenico Di Carlo
Esercitazione 7.3
• Per gestire l’ufficio di motorizzazione di una specifica città, si definisca
la classe Motorizzazione che :
▫ presenti dei campi interni per memorizzare la città cui quella motorizzazione
appartiene ed un insieme ordinato di automobili (utilizzare la classe
Automobile creata nell'esercitazione precedente)
▫ definisca un costruttore che prenda in ingresso una Stringa rappresentante
la città e che azzeri la lista delle automobili di quella motorizzazione
▫ definisca i metodi per accedere ai campi interni
▫ definisca il metodo “aggiungi” che permette di registrare una nuova
automobile (nel caso la targa sia già presente in registro, il metodo
restituisce “false”).
▫ definisca il metodo “equals” per stabilire l’uguaglianza con un’altra
“Motorizzazione” (l’uguaglianza va verificata solo sulla citta di ubicazione)
▫ definisca il metodo “toString”
▫ definisca il metodo “quante”, che restituisce il numero di auto registrate
• Una applicazione di test (Esercitazione73.java) che :
▫ crei una motorizzazione, aggiunga automobili (utilizzare quelle dell'esercizio
precedente).
▫ Provi ad aggiungere un'automobile con la stessa targa di un'altra già
presente (insieme di elementi distinti!) in quella motorizzazione e stampi a
video un messaggio di errore.
▫ Stampi tutte le automobili presenti in quella motorizzazione
Fondamenti di informatica A-K - Domenico Di Carlo
Scarica

Fondamenti di informatica T