Catena e iteratore
Vogliamo che la catena fornisca uno strumento per accedere ordinatamente a tutti i suoi elementi.
Iteratore
Iteratore: Rappresenta in astratto il concetto di posizione all'interno di una catena. Un iteratore si trova sempre dopo un nodo e prima del nodo successivo (che può non esistere se l'iteratore si trova dopo l'ultimo nodo). La posizione è rappresentata da un riferimento al nodo precedente alla posizione dell'iteratore. Possiamo immaginare un iteratore come un cursore in un elaboratore di testi. Un nodo della catena corrisponde ad un carattere. L'iteratore si trova sempre "tra due nodi", come un cursore.
LinkedListIterator
LinkedListIterator:
private class LinkedListIterator implements ListIterator {
// Costruttore
public LinkedListIterator(ListNode h) {
current = h;
previous = null;
}
// Metodi pubblici
public boolean hasNext() { ... }
public Object next() { ... }
public void add(Object x) { ... }
public void remove() { ... }
// Campi di esemplare
private ListNode current; // Nodo che precede pos. attuale
private ListNode previous; // Nodo che precede current
}
In questa classe, l'iteratore gestisce la navigazione all'interno di una lista concatenata, consentendo di controllare la presenza di un elemento successivo, ottenere il prossimo elemento, aggiungere nuovi oggetti e rimuovere elementi esistenti.