Javadoc dla ListIterator mówi:
A
ListIteratornie ma bieżącego elementu; jego pozycja kursora zawsze znajduje się między elementem, który zostałby zwrócony przez wywołanie,previous()a elementem, który zostałby zwrócony przez wywołanie donext().
Dlaczego Java została ListIteratorzaimplementowana tak, aby wskazywała między elementami, a nie na bieżący element? Wydaje się, że to sprawia, że kod klienta mniej czytelny, gdy ma się wielokrotnie zadzwonić getNext(), getPrevious(), więc zakładam, że musi być dobrym powodem wyboru.
Na marginesie, ja tylko napisałem trochę biblioteka o nazwie peekable-ArrayList , która rozciąga się ArrayList, Iteratori ListIteratorktóra zapewnia peekAtNext()i peekAtPrevious()wdrożonych metod, takich jak:
@Override public synchronized T peekAtNext() {
T t = next();
previous();
return t;
}