Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1
Marco Palena Prontuario di Programmazione a Oggetti: Java Collezioni
2
Marco Palena Prontuario di Programmazione a Oggetti: Java Collezioni
TreeSet Interfaccia che estende Collection<E> allo scopo di definire una contenente gli elementi della
Implementazione dell'interfaccia SortedSet<E> mediante un albero collezione in cui ogni elemento esista in una particolare posizione lista corrente nelle posizioni
binario bilanciato. L'efficienza delle operazioni: all'interno della collezione. Le posizioni sono indicizzate a partire che vanno da min (compreso)
da 0 fino a size()-1. Quando si aggiunge un elemento questo viene a max (escluso). La lista
Add Contains Next situato in fondo alla lista, quando si rimuove l'n-esimo elemento si restituita si appoggia sulla
spostano in avanti tutti gli elementi che lo seguono. Il metodo lista su cui è chiamato,
O(log n) O(log n) O(log n) toArray() riempie l'array con gli elementi prelevandoli eventuali modifiche sulla
ordinatamente dalla lista. Definisce i metodi utili per una collezione prima si riflettono sulla
Prevede i costruttori: ordinata (gli elementi che richiedono un'indice possono sollevare seconda e viceversa.
l'eccezione IndexOutOfBoundsException):
Restituisce un oggetto
Costruttore Descrizione ListIterator che permette di
Metodo Descrizione
Crea un nuovo TreeSet ordinato ListIterator<E> listIterator(int iterare avanti o indietro fra
secondo l'ordinamento naturale Restituisce l'elemento in index) tutti gli elementi della lista a
E get(int index)
del tipo dei suoi elementi. Tutti posizione index nella lista. cominciare dalla posizione
TreeSet() gli elementi aggiunti devono index.
Assegna elem all'elemento in
implementare Comparable ed posizione index nella lista, Restituisce un oggetto
essere reciprocamente E set(int index)
sostituendo e restituendo il ListIterator che permette di
confrontabili. contenuto precedente. ListIterator<E> listIterator() iterare avanti o indietro fra
Crea un nuovo TreeSet ordinato tutti gli elementi della lista a
Aggiunge alla lista nella
secondo l'ordinamento naturale cominciare dalla posizione 0.
posizione index l'elemento
del tipo dei suoi elementi e con void add(int index, E elem)
elem, spostando in avanti
TreeSet(Collection<? extends E> elementi iniziali quelli ArrayList
coll)
tutti gli elementi successivi.
contenuti in coll. Tutti gli Implementazione dell'interfaccia List<E> mediante un array
elementi devono implementare Rimuove e restituisce
ridimensionabile. Tale implementazione è dodata di una capacità
Comparable ed essere l'elemento in posizione index
che misura il numero di elementi che possono essere contenuti senza
reciprocamente confrontabili. E remove(int index) nella lista, spostando tutti gli
dover allocare nuova memoria. Quando il numero di elementi
elementi successivi di una
Crea un nuovo TreeSet ordinato contenuti eguaglia la capacità viene allocato un nuovo array che
TreeSet(Comparator<? super E> posizione in avanti.
secondo l'ordinamento definito sostituisce il primo.
comparator)
da comparator. Restituisce l'indice del primo
oggetto nella lista che risulta Add Get Remove Contains Next Iterator.remove
Crea un nuovo TreeSet il cui equal a elem o che è null se
contenuto iniziale sarà lo stesso int indexOf(Object elem) O(1) O(1) O(n) O(n) O(1) O(n)
TreeSet(SortedSet<E> set) elem lo è. Restituisce -1 se
di set, ordinato secondo lo non è possibile trovare alcun
stesso ordinamento di set. oggetto adeguato. Prevede i costruttori:
Restituisce l'indice
List Costruttore Descrizione
dell'ultimo oggetto nella lista
che risulta equal a elem o Crea un nuovo ArrayList con
Interfaccia Implementazione Add Get Remove(0)* ArrayList()
int lastIndexOf(Object elem) che è null se elem lo è. capacità iniziale di default.
ArrayList<E> O(1) O(1) O(n) Restituisce -1 se non è
possibile trovare alcun Crea un nuovo ArrayList con
List<E>
LinkedList<E> O(1) O(n) O(1) oggetto adeguato.
ArrayList(int capacity) capacità iniziale pari a
capacity.
List<E> subList(int min, int max) Restituisce una sottolista
3
Marco Palena Prontuario di Programmazione a Oggetti: Java Collezioni
Crea un nuovo ArrayList con elemento della lista. ammettono valori null.
contenuto iniziale pari al
Aggiunge elem nella prima Associa key nella mappa al
contenuto di coll e capacità void addFirst(E elem)
posizione della lista. valore value. Se esiste già
ArrayList(Collection<? extends E> pari al 110% della dimensione
coll) un'associazione per key il suo
di coll. L'ordine con cui gli Aggiunge elem nell'ultima
void addLast(E elem) valore viene modificato e si
elementi iniziali sono posizione della lista. V put(K key, V value)
restituisce il valore originale.
memorizzati è quello restituito
Se non esistono già altre
dall'iteratore di coll.
Map associazioni per la chiave
specifica restituisce null.
LinkedList Interfaccia Implementazione Get containsKey Next Rimuove le associazioni per
Implementazione dell'interfaccia List<E> mediante una lista
Map<K, V> HashMap<K, V> O(1) O(1) O(h/n) la chiave key. Se esiste
doppiamente concatenata.
Nota: h è la capacità della tabella di hash.
un'associazione per key
questa viene eliminata e si
Add Get Remove Contains Next Iterator.remove V remove(Object key)
Interfaccia che definisce una collezione in cui ad essere restituisce il valore a cui key
O(1) O(n) O(1) O(n) O(1) O(1) memorizzati non sono singoli elementi ma coppie chiave/valore. era associato. Se non esistono
Permette di ricercare i valori V memorizzati sotto una determinata associazioni per la chiave
Prevede i costruttori: chiave K. Una chiave specifica può mapparsi su un valore o specifica restituisce null.
nessuno. Un valore specifico può essere mappato su un numero di Ricopia nella mappa tutte le
chiavi ampio a piacere. I principali metodi sono: void putAll(Map<? extends K, ?
Costruttore Descrizione extends V> otherMap) associazioni presenti in
otherMap.
Crea una nuova LinkedList Metodo Descrizione
LinkedList()
vuota. Elimina tutte le associazioni
void clear()
Restituisce il numero di della mappa.
Crea un nuovo LinkedList con int size() associazioni chiave/valore
contenuto iniziale pari al contenute nella mappa. Restituisce un Set<K> i cui
LinkedList(Collection<? extends contenuto di coll. L'ordine con elementi corrispondono alle
E> coll) cui gli elementi iniziali sono Restituisce true se la mappa chiavi della mappa corrente.
boolean isEmpty()
memorizzati è quello restituito è vuota. Tale insieme è appoggiato
dall'iteratore di coll. sulla mappa, la modifica
Restituisce true se la mappa
Set<K> keySet() degli elementi dell'insieme si
boolean containsKey(Object key) contiene un valore associato
riflette su quelli della mappa
Definisce i metodi che permettono di lavorare efficacemente con le alla chiave key.
e viceversa. Tale insieme è
liste doppiamente concatenate: Restituisce true se la mappa un'implementazione di Set
boolean containsValue(Object
value) contiene una chiave alla che non supporta gli
Metodo Descrizione quale è associato value. inserimenti.
Restituisce il primo elemento V get(Object key) Restituisce l'oggetto Collection<V> values() Restituisce una
E getFirst()
della lista. associato alla chiave key Collection<V> i cui elementi
Restituisce l'ultimo elemento altrimenti null se questa non corrispondono ali valori
E getLast() ha alcuna associazione. presenti nella mappa
della lista.
Restituisce null anche nel corrente. Tale collezione è
Rimuove e ritorna il primo caso in cui key sia mappato appoggiata sulla mappa, la
E removeFirst()
elemento della lista. esattamente su tale valore, modifica degli elementi della
E removeLast() Rimuove e ritorna l'ultimo all'interno di mappe che collezione si riflette su quelli
4
Marco Palena Prontuario di Programmazione a Oggetti: Java Collezioni
che caselle memorizzare le associazioni. Il fattore di carico Nota: h è la capacità della tabella di hash.
della mappa e viceversa. Tale
collezione è stabilisce il momento in cui verrà accresciuta automaticamente la
capacità della mappa hash. Quando il numero degli elementi Interfaccia che estende Map<K, V> ridefinendone la semantica in
un'implementazione di modo da richiedere che le chiavi siano ordinate. Di default tale
Collection che non supporta contenuti nella mappa è maggiore del prodotto del fattore di carico
per la capacità corrente questa viene raddoppiata. Un incremento di ordinamento è quello naturale per le chiavi. In tal caso perciò esse
gli inserimenti. devono implementare l'interfaccia Comparable<K>.
capacità comporta il rehashing di tutte le associazioni presenti nella
Restituisce un Set i cui mappa (operazione costosa). Il fattore di carico di default è 0,75. La Alternativamente l'ordinamento può essere definito mediante un
elementi sono oggetti complessità delle operazioni è: comparatore Comparator<K>. L'ordinamento si rispecchia nei valori
Map.Entry<K,V> che restituiti da keySet(), values() ed entrySet().
rappresentano singole SortedMap<K, V> fornisce metodi che hanno senso in una mappa
Get containsKey Next ordinata:
associazioni presenti nella
mappa. Tale insieme è O(1) O(1) O(h/n)
appoggiato sulla mappa, la Nota: h è la capacità della tabella di hash. Metodo Descrizione
Set<Map.Entry<K,V>> entrySet()
modifica degli elementi
dell'insieme si riflette su Prevede i costruttori: Restituisce il Comparator
quelli della mappa e utilizzato dalla mappa
viceversa. Tale insieme è Comparator<? super K> ordinata corrente. Restituisce
Costruttore Descrizione comperator() null se si ricorre
un'implementazione di Set
che non supporta gli Crea una nuova HashMap con all'ordinamento naturale delle
inserimenti. HashMap(int capacity, float capacità iniziale della tabella di chiavi.
loadFactor) hash capacity e fattore di
Restituisce la prima chiave
carico loadFactor.
Map.Entry (cioè quella di valore minore)
K firstKey()
L'interfaccia Map<K,V> definisce un'interfaccia innestata Crea una nuova HashMap con all'interno della mappa
Map.Entry<K,V> che rappresenta come oggetti le associazioni capacità iniziale della tabella di corrente.
HashMap(int capacity)
presenti nella mappa. Tale interfaccia innestata fornisce i metodi: hash capacity e fattore di
Restituisce l'ultima chiave
carico di deafult (0,75). (cioè quella di valore
K lastKey()
Metodo Descrizione Crea una nuova HashMap con maggiore) all'interno della
capacità iniziale della tabella di mappa corrente.
Restituisce la chiave HashMap()
K getKey() hash di dafault e fattore di
dell'elemento corrente. Restituisce la sottomappa
carico di default (0,75). contenente le associazioni le
Restituisce il valore
V getValue() Crea una nuova HashMap i cui cui chiavi risultano maggiori
dell'elemento corrente.
elementi iniziali sono quelli o uguali a min e minori di
Assegna un valore contenuti nella mappa map, la max. La mappa ritornata si
HashMap(Map<? extends K, ? SortedMap<K, V> subMap(K min, K
V setValue(V value) all'elemento corrente e extends V> map) capacità iniziale della tabella di max) appoggia sulla mappa su cui
restituisce il vecchio valore. hash è basata sulla dimensione tale metodo è chiamato. La
di map Il fattore di carico è modifica delle associazioni
HashMap quello di default (0,75). della prima mappa si riflette
Implementazione dell'interfaccia Map<K, V> mediante una tabella di su quelle della seconda e
hash. Sfrutta il metodo hashCode() delle chiavi allo scopo di viceversa.
SortedMap
individuare una posizione all'interno della stessa in cui inserire le
associaioni. Il metodo hashCode() delle chiavi deve essere definito Interfaccia Implementazione Get containsKey Next TreeMap
in modo efficiente. La tabella interna utilizzata consiste in un certo Implementazione dell'interfaccia SortedMap<K, V> mediante un
SortedMap TreeMap<K, V> O(log n) O(log n) O(log n)
numero di caselle inizialmente determinare in base alla capacità albero binario bilanciato. Essendo molto meno efficiente di una
<K, V>
iniziale della mappa stessa. Il codice hash delle chiavi stabilisce in
5
Marco Palena Prontuario di Programmazione a Oggetti: Java Collezioni
HashMap<K, V> dovrebbe essere usato solo quando si abbia Iterator mediante il metodo listIterator() dell'interfaccia List<E>. Aggiunge
effettivamente bisogno di mantenere l'ordinamento delle chiavi o L'interfaccia Iterator<E> definisce i metodi necessari per eseguire ai metodi di Iterator() (che permettono di iterare in avanti su una
quando il metodo hashCode() per le chiavi non sia scritto in maniera iterazioni su una collezione di oggeti di tipo E. Tali metodi sono: collezione) metodi che permettono l'iterazione all'indietro sulla lista.
efficiente.
Get containsKey Next Metodo Descrizione Metodo Descrizione
O(log n) O(log n) O(log n) Restituisce true nel caso in Restituisce true nel caso in
boolean hasNext() cui l'iterazione preveda boolean hasPrevious() cui l'iterazione all'indietro
Prevede i costruttori: ulteriori elementi. preveda ulteriori elementi.
Restituisce l'elemento Restituisce l'elemento
Costruttore Descrizione successivo all'interno precedente all'interno
dell'iterazione. Se non esiste dell'iterazione. Se non esiste
Crea una nuova TreeMap E next() E previous()
un elemento successivo un elemento precedente
ordinata secondo l'ordinamento
solleva solleva
naturale del tipo delle sue NoSuchElementException. NoSuchElementException.
TreeMap() chiavi. Tutte le chiavi aggiunte
devono implementare Rimuove dalla collezione Restituisce l'indice
Comparable ed essere sottostante, l'elemento che è dell'elemento restituito da
reciprocamente confrontabili. stato fornito per ultimo una successiva invocazione
dall'iterazione. Può essere int nextIndex() di next(). Se l'iteratore è
Crea una nuova TreeMap chiamato solo una volta dopo posizionato sull'ultimo
ordinata secondo l'ordinamento ogni next(), in caso contrario elemento della lista ritorna
naturale del tipo delle sue void remove() solleva size().
chiavi e con associazioni IllegalStateExcleption.
TreeMap(Map<? extends K, ? Restituisce l'indice
extends V> map) iniziali quelle contenute in Modifica la collezione
map. Tutte chiavi in map e sottostante in maniera sicura dell'elemento restituito da
aggiunte devono implementare per l'iterazione, ogni altra una successiva invocazione
Comparable ed essere modifica è da considerarsi int previousIndex() di previous(). Se l'iteratore è
reciprocamente confrontabili. non sicura. posizionato sul primo
elemento della lista ritorna
Crea una nuova TreeMap -1.
TreeMap(Comparator<? super K>
comparator) ordinata secondo l'ordinamento Iterable
definito da comparator. L'implementazione degli oggetti iteratori delle collezioni è in Ridefinisce il metodo
genere nascosta. L'accesso a tali oggetti avviene per mezzo dei remove() di Iterator<E> in
Crea una nuova TreeMap il cui metodi definiti dall'interfaccia Iterable<E>. void remove() modo che rimuova l'ultimo
contenuto iniziale sarà lo stesso valore restituito da next() o
TreeMap(SortedMap<K, V> map) di map, ordinato secondo lo da previous().
Metodo Descrizione
stesso ordinamento previsto da
quest'ultima. Restituisce un iteratore che Sostituisce elem con l'ultimo
Iterator<E> iterator() permette di esaminare la void set(E elem) elemento restituito da next()
collezione corrente. o da previous().
Iterazione
void add(E elem) Inserisce nella lista l'oggetto
Iterator<E> ListIterator elem situandolo prima
Iterable<E>
L'interfaccia ListIterator<E> estende Iterator<E> aggiungendone dell'elemento che dovrebbe
metodi utilizzabili per manipolare, durante l'iterazione, un oggetto essere restituito normalmente
ListIterator<E> di tipo List<E>. Un oggetto di tipo ListIterator<E> è ottenibile come successivo, o alla fine
6
Marco Palena Prontuario di Programmazione a Oggetti: Java Collezioni
della lista nel caso in cui La classe Collections definisce numerosi metodi statici di utilità. suoi membri.
hasNext() restituisca false.
Metodi su collezioni ordinate Riordina list secondo
Infine fa avanzare l'iteratore. <T> void sort(List<T> list,
Comparator<? super T> comp) l'ordinamento definito da
comp.
Comparazione Metodo Descrizione
Esegue l'algoritmo di
Restituisce l'elemento di ricerca binaria sulla lista
Comparable<E> Comparator<E> valore più piccolo list per individuare
<T extends Comparable<? super T>>
T min(Collection<? extends T> coll) all'interno della collezione l'oggetto key restituendone
Comparable in base all'ordinamento <T> int binarySearch(List<? extends l'indice. La lista deve
Interfaccia che definisce la relazione d'ordine naturale tra gli oggetti naturale. Comparable<? super T>> list, T key) essere ordinata secondo
delle classi che la implementano. Comparable<E> risiede nel Restituisce l'elemento di l'ordinamento naturale. Se
package java.lang. Definisce il metodo: valore più piccolo key non è presente nella
<T> T min(Collection<? extends T> lista restituisce un indice
coll, Comparator<? super T> comp) all'interno della collezione
Metodo Descrizione in base all'ordinamento negativo.
definito da comp. Esegue l'algoritmo di
Restituisce un valore che è
minore, uguale o maggiore di Restituisce l'elemento di ricerca binaria sulla lista
zero a seconda che l'oggetto valore più grande list per individuare
<T extends Comparable<? super T>> l'oggetto key restituendone
corrente sia minore, uguale o T max(Collection<? extends T> coll) all'interno della collezione
int compareTo(E other)
maggiore rispetto all'oggetto in base all'ordinamento <T> int binarySearch(List<? extends l'indice. La lista deve
other. Se i due oggetti non naturale. T> list, T key, Comparator<? super T> essere ordinata secondo
comp) l'ordinamento definito da
sono confrontabili solleva
Restituisce l'elemento di comp. Se key non è
ClassCastException.
valore più grande presente nella lista
<T> T max(Collection<? extends T>
coll, Comparator<? super T> comp) all'interno della collezione restituisce un indice
Comparator in base all'ordinamento negativo.
Interfaccia che definisce una relazione d'ordine arbitraria tra definito da comp.
determinati oggetti. Le implementazioni di tale interfaccia sono
oggetti comparatori Comparator<E> mediante le quali è possibile
definire ordinamenti alternativi sugli oggetti di tipo E. Metodi su liste
Comparator<E> risiede nel package java.util. Definisce il metodo:
Metodo Descrizione
Metodo Descrizione Rovescia l'ordine degli
Restituisce un valore che è void reverse(List<?> list) elementi presenti nella
minore, uguale o maggiore di lista.
zero a seconda che l'oggetto Mescola a caso il
e1 sia minore, uguale o void shuffle(List<?> list)
int compare(E e1, E e2) contenuto della lista.
maggiore rispetto all'oggetto
e2. Se i due oggetti non sono Scambia gli elementi i-
confrontabili solleva void swap(List<?>, int i, int j) esimo e j-esimo della lista
ClassCastException. indicata.
<T extends Comparable<? super T>> Riordina list secondo
void sort(List<T> list)
l'ordinamento naturale dei
Utility