fondamenti di informatica t-a esercitazione 7 : collezioni aa 2012/2013 tutor : domenico di carlo

9
Fondamenti di informatica T-A Esercitazione 7 : Collezioni AA 2012/2013 Tutor : Domenico Di Carlo <[email protected]>

Upload: tino-salvi

Post on 02-May-2015

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Fondamenti di informatica T-A Esercitazione 7 : Collezioni AA 2012/2013 Tutor : Domenico Di Carlo

Fondamenti di informatica T-A

Esercitazione 7 : Collezioni

AA 2012/2013Tutor : Domenico Di Carlo<[email protected]>

Page 2: Fondamenti di informatica T-A Esercitazione 7 : Collezioni AA 2012/2013 Tutor : Domenico Di Carlo

Fondamenti di informatica A-K - Domenico Di Carlo

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

Page 3: Fondamenti di informatica T-A Esercitazione 7 : Collezioni AA 2012/2013 Tutor : Domenico Di Carlo

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 !

Page 4: Fondamenti di informatica T-A Esercitazione 7 : Collezioni AA 2012/2013 Tutor : Domenico Di Carlo

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]

Page 5: Fondamenti di informatica T-A Esercitazione 7 : Collezioni AA 2012/2013 Tutor : Domenico Di Carlo

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)

Page 6: Fondamenti di informatica T-A Esercitazione 7 : Collezioni AA 2012/2013 Tutor : Domenico Di Carlo

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

Page 7: Fondamenti di informatica T-A Esercitazione 7 : Collezioni AA 2012/2013 Tutor : Domenico Di Carlo

Fondamenti di informatica A-K - Domenico Di Carlo

Treeset, Esercitazione 7.1

Page 8: Fondamenti di informatica T-A Esercitazione 7 : Collezioni AA 2012/2013 Tutor : Domenico Di Carlo

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

Page 9: Fondamenti di informatica T-A Esercitazione 7 : Collezioni AA 2012/2013 Tutor : Domenico Di Carlo

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