|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||
java.lang.ObjectRubricaTelefonica
public class RubricaTelefonica
Una RubricaTelefonica è una collezione di contatti.
Una rubrica non può contenere contatti uguali
(l'uguaglianza fra contatti è quella definita nella classe Contatto).
elencoContatti che ha tipo List<Contatto>.
List<E>
(da non confondere con la classe concreta List)
estende l'interfaccia Collection<E>.
Come spiegato sotto, le API Java permettono di ordinare
collezioni di tipo List<E>.
RubricaTelefonica non è
sottotipo di List<Contatto>,
in quanto RubricaTelefonica non implementa
l'interfaccia List<Contatto>.
cont occore controllare
che cont non sia già nella rubrica.
boolean contains(Object o)definito nell'interfaccia
Collection<E> (e quindi ereditato
da List<E>).
contains nella documentazione è la seguente:
| Returns true if this collection contains the specified element.
More formally, returns true if and only if this collection contains at least one element e such that (o==null ? e==null : o.equals(e)). |
coll è un oggetto di tipo
Collection<E> e o è un oggetto
di tipo E, la chiamata
coll.contains(o)
restituisce true se e solo se vale una delle seguenti due condizioni:
o è null
e null è un elemento di coll;
o è diverso da null
e coll contiene almeno un elemento e
tale che o.equals(e) restituisce true.
RubricaTelefonica implementa l'interfaccia
Iterable<Contatto>.
Deve quindi definire un metodo
public Iterator<Contatto> iterator()che restituisce un iteratore per i contatti nella rubrica.
iterator
è possibile eseguire il ciclo for-each.
Iterator<Contatto> it = elencoContatti.iterator(); // definisce un iteratore per elencoContatti
// ciclo che cancella tutti i contatti in elencoContatti
while(it.hasNext()){ // termina quando in it non ci sono piu' elementi
Contatto cont = it.next(); // prossimo elemento nell'iteratore
elencoContatti.remove(cont); // togli da elencoContatti il contatto cont
}
è compilato, ma solleva in esecuzione l'eccezione
java.util.ConcurrentModificationExceptionin quanto, finché il ciclo che utilizza l'iteratore
it non è terminato,
la collezione elencoContatti non può essere modificata.
remove dell'interfaccia Iterator<E>:
...
while(it.hasNext()){
Contatto cont = it.next();
it.remove(); // elimina dall'iteratore l'elemento corrente
numeroContatti--;
}
// gli elementi eliminati dall'iteratore sono eliminati anche da elencoContatti
Contatto implementa l'interfaccia
Comparable<Contatto>, è possibile ordinare i
contatti usando il metodo statico
public static <T extends Comparable<? super T>> void sort(List<T> list)
della classe Collections (da non confondere con l'interfaccia
Collection<E>).
sort richiede che:
List<T>.
T deve essere un sottotipo di
Comparable<S>, dove S
è un supertipo di T.
compareTo (usato dal metodo sort
per ordinare gli elementi della lista).
T è la classe Contatto ed entrambe
le condizioni sono verificate
in quanto Contatto implementa l'interfaccia Comparable<Contatto>.
L'ordinamento viene fatto in base alla definizione del metodo compareTo
della classe Contatto.
| Constructor Summary | |
|---|---|
RubricaTelefonica()
Costruisce una rubrica telefonica vuota. |
|
| Method Summary | |
|---|---|
void |
addContatto(Contatto cont)
Se il contatto specificato dall'argomento non è nella rubrica che esegue il metodo lo aggiunge, altrimenti non compie alcuna operazione. |
int |
getNumeroContatti()
Restituisce il numero complessivo di contatti nella rubrica che esegue il metodo. |
java.util.Iterator<Contatto> |
iterator()
Restituisce un iteratore per i contatti della rubrica che esegue il metodo. |
void |
ordina()
Ordina la rubrica che esegue il metodo. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public RubricaTelefonica()
| Method Detail |
|---|
public void addContatto(Contatto cont)
public int getNumeroContatti()
public java.util.Iterator<Contatto> iterator()
iterator in interface java.lang.Iterable<Contatto>public void ordina()
|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||