Javadoc dla ListIterator mówi:
A
ListIterator
nie 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 ListIterator
zaimplementowana 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
, Iterator
i ListIterator
która zapewnia peekAtNext()
i peekAtPrevious()
wdrożonych metod, takich jak:
@Override public synchronized T peekAtNext() {
T t = next();
previous();
return t;
}