Il Javadoc per ListIterator dice:
A
ListIteratornon 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 ListIteratorimplementato 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, Iteratore ListIteratorche fornisce un peekAtNext()e peekAtPrevious()metodi implementati come:
@Override public synchronized T peekAtNext() {
T t = next();
previous();
return t;
}