Il Javadoc per ListIterator dice:
A
ListIterator
non ha alcun elemento corrente; la sua posizione del cursore si trova sempre tra l'elemento a cui verrebbe restituito una chiamataprevious()
e l'elemento a cui verrebbe restituito una chiamatanext()
.
Perché Java è stato ListIterator
implementato per puntare tra gli elementi piuttosto che verso un elemento corrente? Sembra che questo rende il codice client meno leggibile quando deve chiamare più volte getNext()
, getPrevious()
, quindi immagino ci deve essere un motivo buono per la scelta.
Come nota a margine, ho appena scritto una piccola libreria chiamata peekable-arraylist che si estende ArrayList
, Iterator
e ListIterator
che fornisce un peekAtNext()
e peekAtPrevious()
metodi implementati come:
@Override public synchronized T peekAtNext() {
T t = next();
previous();
return t;
}