Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ADT Iteratore
Position ADT Iterator
NodeList ADT Iterable
interface interface PositionList (2)
Position class NodePositionList (2)
PositionList class ElementIterator<E>
class
DNode Iteratore di Posizioni
NodePositionList interface PositionList (3)
inserzione class NodePositionList (3)
rimozione
liste in java.util
1
ADT e interfaccie GT 2
Lista di Nodi
ADT per
Lista di Nodi NodeList
posizione (nella lista) Position
Motivazioni
accedere direttamente ai nodi
accedere in base alla posizione di un nodo, relativamente agli
altri nodi
2
ADT Position
Metodo:
element()
ritorna l’elemento associato alla posizione
Esempi:
mazzo di carte
cursore in un text editor
ADT NodeList
Metodi:
first() ritorna la posizione del primo elemento
last() ritorna la posizione dell’ultimo elemento
prev(p) ritorna la posizione dell’elemento che precede p
next(p) ritorna la posizione dell’elemento che segue p
Errori:
first() and last(): se lista vuota
prev(p): se p è primo elemento
next(p): se p è ultimo elemento
N.B.:
non c’è riferimento all’elemento
si suppone che le posizioni siano valide
3
ADT NodeList (cont.)
Metodi di aggiornamento:
set(p,e)
rimpiazza l’elemento alla posizione p con l’elemento e
ritorna l’elemento che era in p
addFirst(e) inserisce l’elemento e come primo elemento
addLast(e) inserisce l’elemento e come ultimo elemento
addBefore(p,e) inserisce l’elemento e prima della pos. p
addAfter(p,e) inserisce l’elemento e dopo la pos. p
remove(p)
invalida la posizione p
ritorna l’elemento che era in p
Errori
se la posizione passata come argomento non è valida
p == null
p era stato cancellato
p posizione di una lista diversa
nei metodi
prev(p): se p è prima posizione
next(p): se p è ultima posiozione
4
Esempio
Interface Position
10
5
Interface PositionList
11
12
6
Nodo
p prev next
Position<String> p contiene
riferimento ad oggetto di tipo
elem node
DNode<String>
elem node
14
7
class DNode (2/2) prev next
elem node
15
riferimento ad numElts
oggetto di tipo 4 oggetto di tipo
p
PositionList<String> header NodePositionList<String>
trailer
nodes/positions
elements 16
8
class NodePositionList
costruttore
1
2
trailer
numElts 0
header header
trailer
2
1
1
17
18
9
class NodePositionList: ... CheckPosition
19
class NodePositionList
20
10
Inserzione
addBefore(p, X) p
A B C
p
A B C
newNode
X
p
newNode
A B X C
21
3
A B X C
1
2
3
22
11
class NodePositionList (remove)
vPrev v vNext
23
ADT Iteratore
Position ADT Iterator
NodeList ADT Iterable
interface interface PositionList (2)
Position class NodePositionList (2)
PositionList class ElementIterator<E>
class
DNode Iteratore di Posizioni
NodePositionList interface PositionList (3)
inserzione class NodePositionList (3)
rimozione
liste in java.util
24
12
ADT Iterator
metodi
boolean hasNest()
controlla se ci sono ancora elementi inesplorati
Object next()
ritorna prossimo riferimento a prossimo elemento
25
ADT Iterable
metodo:
iterator(): ritorna un Iterator sulla collezione
26
13
Esempio uso iteratore in PositionList
28
14
Iteratore di posizioni (in PositionList)
29
30
15
Costrutto Java 5 For-Each Loop GT: 6.3.2
31
Statement
32
16
Esempio con oggetto collezione
33
6.3.4 java.util.LinkedList
17
6.3.4 problema iteratori multipli
interfaccia java.util.List
classi
java.util.ArrayList
java.util.LinkedList
35
Interfaccie
Collection: estende Iterable ha metodo iterator()
Iterator
List: estende Collection, metodo listIterator()
ListIterator: vedi slides prec.
Map: mappa chiavi a valori
Queue: coda con nomi suoi
Set: insiemi
classe java.util.LinkedList
metodi ADT deque (GT 5.3) e ADT arrayList (GT 6.1)
36
18
6.4.3 ADT Sequence
metodi ADT deque (GT 5.3), ADT arrayList (GT 6.1) e ADT node
list (GT 6.2).
+ due metodi di conversione indice posizione
37
Esercizi
38
19