Использование ListIterator для перемещения вперед и назад по LinkedList в Java

У меня есть LinkedList, по которому мне нужно многократно повторять туда-сюда. Я использую его для отслеживания ряда страниц в рабочем процессе, который будет создаваться динамически. Это не ведет себя так, как я ожидал. Учитывая этот пример:

LinkedList navigationCases;
navigationCases.add("page1");
navigationCases.add("page2");
navigationCases.add("page3");
navigationCases.add("page4");

ListIterator navigationItr = navigationCases.listIterator();
navigationItr.next(); // Returns page1
navigationItr.next(); // Returns page2
navigationItr.previous(); //Returns page2 again
navigationItr.next(); //Returns page2 again

Я подумал, что, возможно, я неправильно строю свой список или неправильно использую итератор, но после прочтения документации это выглядит так:

ListIterator не имеет текущего элемента; его позиция курсора всегда находится между элементом, который будет возвращен вызовом previous (), и элементом, который будет возвращен вызовом next ().

А также:

(Next) Возвращает следующий элемент в списке. Этот метод может вызываться многократно для итераций по списку или смешиваться с вызовами к предыдущим для перехода вперед и назад. (Обратите внимание, что чередующиеся вызовы next и previous будут возвращать один и тот же элемент несколько раз.)

Так что после прочтения становится понятно, почему мой код ведет себя так, как он. Я просто неЯ не понимаю, почему так должно работать. Даже удаление, кажется, изгибается назад, чтобы приспособить эту реализацию:

Обратите внимание, что методы remove () и set (Object) не определены в терминах позиции курсора; они определены для работы с последним элементом, возвращаемым вызовом next () или previous ().

Концептуально, LinkedList, казалось, довольно хорошо моделировал мои рабочие процессы, но я могуt использовать Итератор, который ведет себя таким образом. Я что-то здесь упускаю, или я должен просто написать свой собственный класс, вести список дел и перемещаться по ним?

Ответы на вопрос(3)

Ваш ответ на вопрос